这是我的框架的最后两行动作脚本:
removeListeners();
if(!stage.hasEventListener(Event.ENTER_FRAME)){trace("STAGE HAS NO eventListeners");}
之前已将removeListeners()函数描述为:
function removeListeners(){
if(button){
button.removeEventListener(MouseEvent.CLICK,leaveGameScene);
}
stage.removeEventListener(Event.ENTER_FRAME,menuOnFrame);
stage.removeEventListener(Event.ENTER_FRAME,collectDrachmas);
stage.removeEventListener(Event.ENTER_FRAME,updateHealth);
stage.removeEventListener(Event.ENTER_FRAME,updateCards);
stage.removeEventListener(Event.ENTER_FRAME,updateQuestions);
stage.removeEventListener(Event.DEACTIVATE,stageDeactivate);
stage.removeEventListener(KeyboardEvent.KEY_DOWN,key_down);
stage.removeEventListener(KeyboardEvent.KEY_UP,key_up);
stage.removeEventListener(Event.ENTER_FRAME,charEnterFrame);
stage.removeEventListener(Event.ENTER_FRAME,updateInteractives);
stage.removeEventListener(Event.ENTER_FRAME,onFrameBadguy);
stage.removeEventListener(Event.ENTER_FRAME,onFrameStage);
stage.removeEventListener(Event.ENTER_FRAME,updateConversations);
stage.removeEventListener(Event.ENTER_FRAME,updatePit);
//etc etc etc
}
从而彻底删除整个项目中出现的任何可能的现有eventListener。我们知道没有多次添加eventListeners,因为下面给出了原因,并且因为所有现有的eventListener在退出帧时都以此代码终止。
通过我的项目的所有eventListeners都被简单地声明,并且没有添加到其他函数或类似的东西中(如下所示),因此消除了由于具有多个相同的eventListeners而导致此问题的可能性:
stage.addEventListener(Event.ENTER_FRAME,updateHealth);
当我的帧的动作脚本的最后两行被执行时,Flash表现得好像舞台上绝对没有ENTER_FRAME eventListeners,顽固地追踪
"STAGE HAS NO eventListeners"
相应。但是,在运行此帧上的代码之后,将运行已在前一帧上声明的阶段的多个ENTER_FRAME eventListeners(这会导致多个错误,因为当前正在调用空对象)! eventListener似乎重新出现在没有原因和没有原因的地方。这怎么可能?什么可能是这个问题的根源?
也许我应该提一下,我使用完全相同的方法和一个按钮前进到这个框架没有麻烦。两种方式都以:
结束removeListeners();
gotoAndPlay(1,"Menu");
更新
以下是给出的错误:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/collectDrachmas()[_109_fla.MainTimeline::frame1:369]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateHealth()[_109_fla.MainTimeline::frame1:417]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateQuestions()[_109_fla.MainTimeline::frame1:592]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateCards()[_109_fla.MainTimeline::frame1:810]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/charEnterFrame()[_109_fla.MainTimeline::frame1:978]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateInteractives()[_109_fla.MainTimeline::frame1:1892]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/onFrameBadguy()[_109_fla.MainTimeline::frame1:2015]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/onFrameStage()[_109_fla.MainTimeline::frame1:2638]
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at _109_fla::MainTimeline/updateConversations()[_109_fla.MainTimeline::frame1:2760]
由于各自函数中的以下eventListeners,会发生这些错误:
function collectDrachmas(e:Event)
function updateHealth(e:Event)
function updateCards(e:Event)
function charEnterFrame(e:Event)
function updateInteractives(e:Event)
function onFrameBadguy(e:Event)
function onFrameStage(e:Event)
function updateConversations(e:Event)
答案 0 :(得分:1)
我无法了解你的问题。但这是我对它的理解。
请分享更多代码,以便我们了解最新情况。那么我们绝对可以帮助你。