2012-03-16 115 views
-2

弹出此错误:错误#1009:无法访问空对象引用的属性或方法。在test9_fla :: MainTimeline/PlayerMovement()Flash中的AS3错误#1009

这里是我的代码:

stage.addEventListener(Event.ENTER_FRAME,PlayerMovement);

功能PlayerMovement(事件:事件){

if(down) { 
    Jack.y += speed; 
    if(Jack.hitTestObject(Muur1)) 
    { 
     Jack.y -= speed; 
    }}else if(up) 
{ 
    Jack.y -= speed; 
    if(Jack.hitTestObject(Muur1)) 
    { 
     Jack.y += speed; 
    }}else if(left) 
{ 
    Jack.x -= speed; 
    if(Jack.hitTestObject(Muur1)) 
    { 
     Jack.x += speed; 
    }}else if(right) 
{ 
    Jack.x += speed; 
    if(Jack.hitTestObject (Muur1)) 
    { 
     Jack.x -= speed; 
    }} 

我怎么能解决这个错误吗?

+1

通过调试器运行它,并确切地看到问题出在哪里。这可能是因为所使用的变量之一未启动。 – 2012-03-16 11:53:03

+0

@Feia因为'down'没有被定义为 – mgraph 2012-03-16 12:24:48

+0

-1,因为代码非常糟糕。我很难说,有一个if语句和其他三个if语句。另外,使用调试器。 – mfa 2012-03-18 06:38:26

回答

0

最有可能的stage未定义,您需要等待onAddedToStage事件。但是你为什么直接进入舞台呢?您不需要,您可以简单地将您的事件侦听器添加到当前的影片剪辑(在您的情况下最有可能是文档根目录)。

addEventListener(Event.ENTER_FRAME, PlayerMovement); 
+0

由于它可能是一款游戏,因此拥有多个ENTER_FRAME处理程序通常是一个糟糕的主意。尽管完全放弃ENTER_FRAME并改用Timer事件会更好。 – joncys 2012-03-16 12:55:14