2016-08-31 17 views
0

私は最初のフレームで宣言されている単純な関数をテストしようとしています。 fl_DoRestart();frame 50に書き込むと、次のエラーが表示されます。Uncaught ReferenceError: fl_DoRestart is not definedが、フレーム1に定義されています。なぜこれは動作していないのですか? 。これは、ActionScriptで非常にシンプルにするために使用:(CreateJS/Adob​​e Animate CC:単純な関数のテスト

私は最終的に今、私はちょうどそれをテストしています、他の関数からこの関数を呼び出すことができるようにする必要があり

ここでは、フレーム1上の私の機能です:

アニマットで
function fl_DoRestart(){ 
     this.gotoAndPlay(1); 
     console.log("play From Start"); 
    } 

答えて

1

機能は、そのフレームに定義されているが、それが何かへの参照を持っていません。あなたはそのフレームだけのスクリプトから呼び出すことができます(とthisではなく、そのスクリプトのwindowでもよい)

エクスポートするには、thisにメソッド呼び出しを格納してアクセスできるようにすることをお勧めします。

this.fl_DoRestart(){ 
    this.gotoAndPlay(1); 
    console.log("play From Start"); 
} 
this.fl_DoRestart(); 

// From the root 
exportRoot.someMoveClip.fl_DoRestart(); 

// Using a callback 
btn.addEventListener("click", someMovieClip.fl_DoRestart.bind(this)); 

// Shortcut with "on()" 
btn.on("click", someMovieClip.fl_DoRestart, this); 

これがどのように働くかについての光を放つ希望。もう一つ考慮すべき点は、アニメーションCCエクスポートのフレームスクリプトは、そのフレームにアクセスするたびに実行されるため、スクリプトを実行する前に事柄が定義されているかどうかを確認したい場合があります。

if (this.fl_DoRestart == null) { 
    // Then define stuff here 
} 

乾杯。

+0

ありがとうLannyこれは役に立ちます。だから、関数を宣言するのに 'this'を使うと、他のフレームからその関数にアクセスできますか?それ以外の場合、関数のスコープは宣言されたフレームに限定されますか? 関数は宣言されても呼び出されないと実行されますか?うわー! ありがとう、私はここでラウンドするいくつかのものがあります:) –

関連する問題