1

問題が解決しました。コメントをご覧ください。評判ポイントのため、私は自分の質問に答えることができません。

シンプルなフラッシュゲームを開発しようとしています。シンボルと、スプラッシュ (ゲームのイントロ画面を表す) と呼ばれるこのシンボルにリンクされた AS3 クラスと、StartButton シンボルがあります。「button_start」のインスタンス名を指定して、Flash IDE を使用してスプラッシュ シンボルに配置された StartButton シンボル。

Splash.as で、StartButton の ADDED_TO_STAGE イベント ハンドラにアクセスしようとしていますが、null ポインタ例外が発生しました。コードは次のとおりです。

public function Splash() {
    trace("splash const");
    addEventListener(Event.ADDED_TO_STAGE, ats);
    super();
}

public function ats(e:Event) {
    trace("splash ats");
    var i:int = 0;
    for (i=0;i<numChildren;i++) {
        if (getChildAt(i).name.search("button")) {
            trace("bulundu");
            buton = getChildAt(i) as MovieClip;
            buton.addEventListener(Event.ADDED_TO_STAGE, butonats);
        }
    }
}

function butonats(e:Event) {
    trace("buton ats");         
}

結果:

splash const
splash ats
bulundu
TypeError: Error #1009: Boş nesne başvuru özelliğine veya yöntemine erişilemiyor.
    at Splash/ats()

すべての子の準備が整ったときに ADDED_TO_STAGE が実行されませんか? どこが間違っているのか理解できませんでした。

4

1 に答える 1

0

*button_start* は MovieClip のインスタンスではなく、Shape です。したがって、コードにこの変更を加えることで問題が解決しました。

var buton:Shape; 
public function Splash() {
   trace("splash const");
   addEventListener(Event.ADDED_TO_STAGE, ats);
   super();
}

public function ats(e:Event) {
   trace("splash ats");
   var i:int = 0;
   for (i=0;i<numChildren;i++) {
       if (getChildAt(i).name.search("button")) {
           trace("bulundu");
           buton = getChildAt(i) as MovieClip;
           buton.addEventListener(Event.ADDED_TO_STAGE, butonats);
       }
   }
}
于 2013-06-20T14:47:53.773 に答える