免责声明:我在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);
}
老实说,我不知道为什么会这样。我正在使用鼠标事件而不是按钮事件等因为我的影片剪辑开始消失,闪烁和其他无法解释的东西......
...耶
答案 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对象。