2014-09-20 95 views
0

我想通过单击attackButton并使用hitTestObject命中我的目标3次,其生命值也会从3减小到0,然后在命中我的目标后,如果生命值为0,它会将转到“祝贺”屏幕或关键帧。我的问题是,它仅在我第一次击中目标时进行注册,然后在第二次,第三次击中目标后没有任何反应......等等。请帮忙?AS3 hitTestObject未正确注册

var life = 3; 

    attackButton.addEventListener (MouseEvent.CLICK, attack01); 

    function attack01 (e:MouseEvent): void { 
     colliderPlayer.gotoAndPlay(2); 
    } 

    stage.addEventListener(Event.ENTER_FRAME, lifeEnemy); 

    function lifeEnemy(evt:Event): void { 
     if(this.colliderPlayer.hitTestObject(boss)){ 
      stage.removeEventListener(Event.ENTER_FRAME, lifeEnemy); 
      life = life - 1; 
      trace(lifeEnemy); 

      if(lifeEnemy==0) { 
       MovieClip(root).gotoAndStop('ending'); 
      } 

     } 
    } 
+1

更换'跟踪(lifeEnemy);'和'跟踪(生命);'现在每次你点击攻击按钮,输出是什么? – Fergoso 2014-09-20 21:40:42

回答

0

命中测试失去作用的原因是因为如果命中测试成功,你要删除的监听器来检查命中试了下阵子。我指的是该生产线是:

stage.removeEventListener(Event.ENTER_FRAME, lifeEnemy); 

如果要停止检查,当敌人的生命是0次命中的,这样做:

var life = 3; 

attackButton.addEventListener (MouseEvent.CLICK, attack01); 

function attack01 (e:MouseEvent): void { 
    colliderPlayer.gotoAndPlay(2); 
} 

stage.addEventListener(Event.ENTER_FRAME, lifeEnemy); 

function lifeEnemy(evt:Event): void { 
    if(this.colliderPlayer.hitTestObject(boss)){ 
     life = life - 1; 
     trace(life); 

     if(life==0) { 
      stage.removeEventListener(Event.ENTER_FRAME, lifeEnemy); 
      MovieClip(root).gotoAndStop('ending'); 
     } 

    } 
} 
+0

它有错误。当我第一次击中目标时,它立即进入结局场景。我想在第三次。 我在输出中也得到了这个错误: 'TypeError:Error#1009:Can not access a property or method of null object reference。 \t at Plate2_fla :: gamePlay2_444/lifePlayer1()' – user2774820 2014-09-20 20:37:13

+0

再次检查您的代码后,我发现了一个问题。我已经纠正了'if'条件。再试一次。 – 2014-09-20 20:53:51

+0

哦,是的,我已经纠正了那一个,但它是同样的问题。当我第一次击中目标时,它立即进入结局场景,而不是第二次和第三次。 – user2774820 2014-09-20 21:08:24