2014-02-21 92 views
-1

我得到这个真的很烦错误 “类型错误:错误#1009:在monke2_fla无法访问空对象引用的属性或方法 :: MainTimeline/UPDATE2()” 我找不到NULL var,除了#1009错误之外,任何帮助都会很棒,因为脚本工作正常。类型错误:错误#1009无法找到空对象

var randomX:Number = Math.random() * 800; 

Banana_mc1.x = randomX; 
Banana_mc1.y = 0; 

var speed:Number = 10; 
var speed2:Number = 5; 
var speed3:Number = 2; 
var speed4:Number = 6; 
Banana_mc1.addEventListener(Event.ENTER_FRAME, moveDown); 
var playerScore:int = 0; 
var stopLoop = 0; 
if (stopLoop == 1) { } else { 
function moveDown(e:Event):void 
{ 
Banana_mc1.y += speed; 
Banana_mc2.y += speed2; 
    Banana_mc3.y += speed3; 
     Banana_mc4.y += speed3; 
     Banana_mc5.y += speed; 
     Banana_mc6.y += speed4; 
    Snake_mc1.y += speed2; 
      Bunch.y += speed3; 
     Snake_mc2.y += speed3; 
} 
} 
// KEYS 
stage.addEventListener (KeyboardEvent.KEY_DOWN, myFunction) ; 
//Monkey.addEventListener(Event.ENTER_FRAME, update); 
function myFunction (event: KeyboardEvent) 
{ 
    if(event.keyCode == Keyboard.LEFT) 
    Monkey.x -= 10; 

    if(event.keyCode == Keyboard.RIGHT) 
    Monkey.x += 10; 
} 
var hitAry:Array = [Banana_mc1,Banana_mc2,Banana_mc3,Banana_mc4,Banana_mc5,Banana_mc6]; 
var hitAry2:Array = [Snake_mc1,Snake_mc2]; 
stage.addEventListener(Event.ENTER_FRAME, update2); 
function update2(e:Event):void 
{ 
var hitAry:Array = [Banana_mc1,Banana_mc2,Banana_mc3,Banana_mc4,Banana_mc5,Banana_mc6]; 
var hitAry2:Array = [Snake_mc1,Snake_mc2]; 
    for (var i:int=0; i < hitAry.length; i++) { 
     if (Monkey.hitTestObject(hitAry[i])) { 

      trace("HIT"); 
      hitAry[i].parent.removeChild(hitAry[i]); 
      trace(hitAry[i]); 
      playerScore+=1; 
       playerScoreText.text = ("" + playerScore); 
     } else { 

      trace("MISS"); } 
       if (Floor.hitTestObject(hitAry[i])) { 

      trace("HIT The Floor"); 
      hitAry[i].gotoAndPlay(35); 
        stopLoop = 1; 

     } else { 

      trace("MISS"); } 
} 

    for (var b:int=0; b < hitAry2.length; b++) { 
     if (Monkey.hitTestObject(hitAry2[b])) { 
    Monkey.Head.gotoAndPlay(23); 
      trace("HIT"); 
      hitAry2[b].parent.removeChild(hitAry2[b]); 
      playerScore-=1; 
      if (playerScore <= 0) { playerScore = 0; } 

       playerScoreText.text = ("" + playerScore); 
     } else { 

      trace("MISS"); } 

} 
    if (Monkey.hitTestObject(allleft)) { 
    Monkey.Head.gotoAndPlay(23); 
      trace("BITE"); 
         playerScore-=100; 
      if (playerScore <= 0) { playerScore = 0; } 

       playerScoreText.text = ("" + playerScore); 
     } else { 

      trace("NO BITE"); } 
       if (Monkey.hitTestObject(allright)) { 
    Monkey.Head.gotoAndPlay(23); 
      trace("BITE"); 
         playerScore-=100; 
      if (playerScore <= 0) { playerScore = 0; } 

       playerScoreText.text = ("" + playerScore); 
     } else { 

      trace("NO BITE"); } 
if (Monkey.hitTestObject(Bunch)) { 

      trace("HIT BUNCH"); 
      Bunch.parent.removeChild(Bunch); 
      playerScore+=10; 
       playerScoreText.text = ("" + playerScore); 
     } 


} 

这是一个任务就是在到期我打砖墙,在此先感谢

  • 切尔西
+0

这还不够远。不幸的是,这是时间轴编码的缺陷。这可能是因为您的任何数量的影片剪辑/显示对象或儿童未正确设置。确保你的实例名称是正确的。检查你的父/子层次结构,确保像“Bunch.parent”这样的东西实际上有一个父对象。添加跟踪语句以确定在抛出错误之前运行的最后一件事情。 –

回答

0

好,靠近你的代码的底部,你说:Bunch.parent.removeChild(Bunch);

但是你也有:Banana_mc1.addEventListener(Event.ENTER_FRAME, moveDown);它调用一个函数,保持引用Bun ch

您可以通过不删除来测试。如果修复了null var问题,那么你将不得不决定如何继续。你想让游戏继续或结束后消失?

再就是也是这个:

hitAry[i].parent.removeChild(hitAry[i]); 
    trace(hitAry[i]); 

你试图跟踪它,你删除它之后! mightmake hitAry [i] null!

+0

这不会使'hitAry [i]'无效,但是如果'hitAry'中的某个元素没有添加到stage(或刚刚从其父元素中移除),则其“parent”属性为null。这很可能是OP的错误,尽管碰到'Bunch'可能会产生相同的结果。 – Vesper

相关问题