0

好的,我在第 1 帧上有此代码

 addEventListener(Event.ENTER_FRAME, changeframe);

 function changeframe(event:Event):void
 {
 btsakhir.y -=  6;

 if (btsakhir.y <= 56)
 {
     nextFrame();
 }
 }

但是当我在进入下一帧时对其进行测试时,它会显示无法访问空对象引用的属性或方法。但如果在第 2 帧中我添加实例 btsakhir 它不是错误。但我在第 2 帧中想要的只是,没有 btsakhir,有人可以给我解决方案,所以在没有 btsakhir 的情况下进入第 2 帧时没有错误

4

1 回答 1

1

发生的情况是,当 flash 进入下一帧时,Event.ENTER_FRAME 事件处理程序仍在运行。它期望有一个名为“btsakhir”的对象具有ay 属性。您可以通过在 changeFrame() 方法中添加跟踪来测试这一点,您应该会看到它仍在跟踪,即使它在下一帧上。

你可以做两件事:

1.)更改您的事件处理程序(您的 changeframe() 方法)以检查并说明“btsakhir”何时不再存在于下一帧中。这可能会有点混乱,不推荐,具体取决于您选择的方式。

或者

2.) 删除事件侦听器,以便在您转到下一帧时它根本不运行。如果 changeframe() 方法所做的只是检查“btsakhir”的sy 属性,那么这可能是一个更好的方法。要删除事件侦听器,您可以添加:

this.removeEventListener(Event.ENTER_FRAME, changeframe);

您可以在调用 nextFrame(); 之前添加它。


当然,如果您的对象“btsakhir”应该存在于下一帧中(并且是时间线/舞台上的对象),只需向其添加帧即可。

于 2013-05-01T10:18:32.257 回答