2011-05-13 10 views

答えて

1

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"); 
} 
+0

+1イベントのディスパッチ方法については言及しなかったのはなぜですか?これが彼のやり方です。 – DanielB

0

は、あなたのコンセプトを考える必要があります。ロードされたSWFは、ロードされたムービーから適切に機能するように関数を呼び出す必要がありますか?ロードされたムービーは決してスタンドアロンで実行されませんか?

ローダー(親)swfにすべての機能を実装する必要があります。ローダームービーは彼が何をロードしているかを知っているので、ロードされたクリップ上で関数を呼び出すことができます。しかし、別の方法は単に悪いデザインです。

ロード済みのムービーに対してCOMPLETE(ローディング)またはADDED_TO_STAGEに反応して、この方法で機能を実装することができます。

+0

こんにちはダニエルを行うことができます問題は、読み込まれたムービークリップ内でアニメーションが完了すると、トリガーするルートベースの機能がないことです。そのため、親からこれを監視する方法はわかりません。 – Dancer

+0

PatrickSのイベントディスパッチャアプローチを採用してください。 – DanielB