AS3 gotoAndStop(2);第二次帧运行时导致1009错误

时间:2013-08-18 10:33:55

标签: actionscript-3 button null

免责声明:我在AS3上真的很新/非常糟糕所以它可能永远不会发生真正的愚蠢

好的,第一次我的主菜单框架运行时,它运行正常并在我按下按钮时将我发送到游戏框架。游戏完成后,它会返回到菜单框,并且运行正常,直到我按下之前的相同按钮,这会调用此错误:。

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Main_fla::MainTimeline/frame2()[Main_fla.MainTimeline::frame2:6]
at flash.display::MovieClip/gotoAndPlay()
at Main_fla::MainTimeline/easyPress()[Main_fla.MainTimeline::frame3:83]
at Main_fla::MainTimeline/mClickE()[Main_fla.MainTimeline::frame3:45]

我的按钮代码如下:

buttEasy.addEventListener(MouseEvent.CLICK, mClickE);
buttHard.addEventListener(MouseEvent.CLICK, mClickH);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mMove);


function mClickE(e:MouseEvent){


easyPress();
trace("easyP");
menuUsed = true;

}


function easyPress(){
trace("Waited for press and release"); 
sTime = 0;

sTempo =  (6) ;

sBall = 0;

ballSpeed = 7;

gameIsOver = false;

menuUsed = true;

lvlArray0= new Array(1,0,0,2,0,0,1,0,0,3,0,0,1,0,0,2,0,0,1,0,0,3,0,01,0,0,2,0,0,1);

init2 = false;

buttEasy.removeEventListener(MouseEvent.CLICK, mClickE);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mMove);

gotoAndPlay(2);


}

老实说,我不知道为什么会这样。我正在使用鼠标事件而不是按钮事件等因为我的影片剪辑开始消失,闪烁和其他无法解释的东西......

...耶

2 个答案:

答案 0 :(得分:0)

我刚注册,所以我不能将其作为评论发布。 无论如何,错误发生在第2帧,而不是在您提供的脚本中(位于第3帧)。 您可以在错误消息中看到: “在Main_fla :: MainTimeline / frame2()[Main_fla.MainTimeline :: frame2:6]” - >第2帧第6行。 在那里你正在访问不再存在的东西。 ( - >现在为null的东西) 也许舞台上的一个物体已被移除。 (但是还有很多其他的可能性,所以不要坚持使用那个解决方案) 在第3帧上发布您的脚本以获得进一步的帮助。

由于此错误,闪烁和其他无法解释的事情发生了。它会中止脚本并正常运行闪存。 (这意味着例如stop();方法将不会执行 - >播放器遍历所有帧 - >舞台上的对象似乎闪烁)

答案 1 :(得分:0)

你可能只是在给出参考之前解决“阶段”。用以下代码启动代码:

addEventListener(Event.ADDED_TO_STAGE, init);

以及此侦听器的处理程序

private function init(e:Event):void
{
    removeEventListener(Event.ADDED_TO_STAGE, init);
    // write your code after this
}

如果你是帧脚本(在一个帧中编写AS3代码)这不是你的问题。 但是正如问题所述 - 你正在调用一些对象属性或方法。您的调试器将能够指向您尝试在第2帧调用的null对象。