AS3を使用して動的にロードされたムービークリップ(addchildを使用してロード)からルート内の関数をトリガする最適な方法を知っている人はいますか?AS3 - ネストされた動的にロードされたムービークリップからルート内の関数を呼び出す方法
おかげ ポール
AS3を使用して動的にロードされたムービークリップ(addchildを使用してロード)からルート内の関数をトリガする最適な方法を知っている人はいますか?AS3 - ネストされた動的にロードされたムービークリップからルート内の関数を呼び出す方法
おかげ ポール
DanielBはポイントがありますが、これは実際には最高のデザインではありません。 ムービーがロードされると、この関数を呼び出すオブジェクトを設定できます。これは...
private var _functionCaller:MovieClip;
private function onLoadComplete(event:Event):void
{
_functionCaller = this.parent; // or this.parent.parent or whatever else
}
private function callExternalFunction():void
{
if(_functionCaller != null)
_functionCaller.execute();
}
より良いアプローチは、関数を呼び出すために、あなたのルートを通知するためにイベントを使用することができ...例えば、多くの方法で
private var _dispatcher:EventDispatcher;
//this function will be called from the parent
public function init(dispatcher:EventDispatcher):void
{
_dispatcher = dispatcher
}
private function callExternalFunction():void
{
// You could also create a Custom Event
if(_dispatcher != null)
_dispatcher.dispatchEvent("call external function");
}
は、あなたのコンセプトを考える必要があります。ロードされたSWFは、ロードされたムービーから適切に機能するように関数を呼び出す必要がありますか?ロードされたムービーは決してスタンドアロンで実行されませんか?
ローダー(親)swfにすべての機能を実装する必要があります。ローダームービーは彼が何をロードしているかを知っているので、ロードされたクリップ上で関数を呼び出すことができます。しかし、別の方法は単に悪いデザインです。
ロード済みのムービーに対してCOMPLETE
(ローディング)またはADDED_TO_STAGE
に反応して、この方法で機能を実装することができます。
+1イベントのディスパッチ方法については言及しなかったのはなぜですか?これが彼のやり方です。 – DanielB