0

リスナーにアタッチされた関数を使用する必要があるネストされた関数を含む関数の外部に、いくつかの MouseEvent リスナーがあります。

button1.addEventListener(MouseEvent.ROLL_OVER, buttonOver); 

function navigation (): void {

    if statements;

    function buttonOver(event:MouseEvent):void {
        movieclip.play();
    }
}

「1120: 未定義のプロパティ buttonOver へのアクセス」エラーが発生し続けます。EventListener が関数「ナビゲーション」の外にあるためだとわかっていますが、後で他の関数からアクセスする必要があります。私はこれについてすべて間違っていますか?

4

5 に答える 5

1

それはうまくいきません。関数をネストする必要はないと思います。代わりに、他のクラス/インスタンスからアクセスできるクラスを使用してみませんか?

ロブ

于 2012-03-12T18:01:21.933 に答える
1

ネストされた匿名関数を忘れてください。また、フレームにコードを書くことも忘れてください。それらを使用せずに、必要なことはすべて行うことができます。

于 2012-03-12T19:40:55.003 に答える
0

そもそもネストされた関数が必要な理由がわかりません。ネストしなくても、すべてがずっと簡単になります。

button1.addEventListener(MouseEvent.ROLL_OVER, buttonOver); 

function navigation (): void {

    if statements;
}
function buttonOver(event:MouseEvent):void {
    movieclip.play();
}
于 2012-03-12T18:06:36.493 に答える
0

よくわかりませんが、何らかの条件に従ってイベントリスナーを追加してから削除しようとしていますか?

初心者がイベント ハンドラーをネストしようとしているのを見ると、これが初心者にとって最も一般的な間違いです。

function navigation (): void {
    if (somethingTrue){
        button1.addEventListener(MouseEvent.ROLL_OVER, buttonOver); 
    else if(somethingElseTrue){
        button1.removeEventListener(MouseEvent.ROLL_OVER, buttonOver);
    }  
}

function buttonOver(event:MouseEvent):void {
    movieclip.play();
}
于 2012-03-12T20:19:16.263 に答える
0

他の回答が述べたように、ネストされた関数は、それが定義されている関数のスコープに制限されています。その関数の外でアクセスしようとすると、エラーがスローされます。以下の関連する Adob​​e ドキュメント:

http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f54.html

ネストされた関数をネストされた関数の外に移動するか、リスナーを呼び出して呼び出すように変更しnavigationますnavigationbuttonOver

于 2012-03-12T20:35:39.153 に答える