问题解决了。请看评论。由于声誉点,我无法回答我自己的问题。
我正在尝试开发一款简单的Flash游戏。我有一个符号和一个AS3类链接到这个符号Splash(代表游戏的介绍屏幕)和一个StartButton符号。使用Flash IDE将StartButton符号放置在Splash符号中,并给出实例名称“button_start”。
在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不会运行吗?错在哪里无法弄清楚。
答案 0 :(得分: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);
}
}
}