繁体   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