簡體   English   中英

無法在ADDED_TO_STAGE事件處理程序中訪問子MovieClips

[英]Can't access child MovieClips in ADDED_TO_STAGE event handler

問題解決了。 請查看評論。 由於聲望高低,我無法回答自己的問題。

我正在嘗試開發一個簡單的Flash游戲。 我有一個符號以及一個鏈接到該符號的AS3類,稱為Splash(代表游戲的簡介屏幕)和一個StartButton符號。 給定實例名稱“ button_start”,使用Flash IDE將StartButton符號放置在Splash符號中。

在Splash.as中,我試圖訪問StartButton的ADDED_TO_STAGE事件處理程序,但出現空指針異常。 這是代碼:

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不會運行嗎? 哪里出了問題無法解決。

* 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);
       }
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM