【发布时间】:2012-10-29 22:33:00
【问题描述】:
按照 MJW 的调试错误 #1009 指南,我设法修复了整个空阶段错误。但是现在初始化子弹的函数没有被调用。
片段:
if (stage) {
init();
} else {
addEventListener(Event.ADDED_TO_STAGE, init);
}
...
private function init(event:Event = null) {
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.addEventListener(Event.ENTER_FRAME, shoot);
}
...
private function shoot(event:Event) {
var bullet:EnemyBullet = new EnemyBullet();
stage.addChild(bullet);
bullet.x = enemy.x;
bullet.y = enemy.y;
bullet.theta = Math.random() * 360;
bManager.bulletVector.push(bullet);
}
请注意,当我将 trace() 放在后两个函数中时,什么也没有发生,但第一个 sn-p 中的 addEventListener() 确实被调用了(或者我认为如此)。
【问题讨论】:
-
1) 你确定第一个 sn-p 被调用了吗?在那里抛出一个断点/跟踪来验证。 2) 对象是否真的被添加到舞台上? Event.ADDED_TO_STAGE 仅在将对象添加到舞台时调用(有意义,对吗?)因此,如果您实际上并未将其添加到舞台,它将永远被调用
-
你能粘贴你的整个班级吗?
-
@Apocalyptic0n3 我做了一个跟踪测试,这就是我验证它被调用的方式。那么我应该改用什么?当我将代码粘贴到第一个 sn-p 所在的 shoot 函数中时,出现错误。
-
你从来没有回答我的第二个问题:你是要把这个加到舞台上吗?如果不是,那么
stage将始终为空,并且 Event.ADDED_TO_STAGE 将永远被调度。 -
@Apocalyptic0n3 抱歉,我正在将对象添加到舞台。我该如何初始化它?
标签: actionscript-3