2014-09-20 91 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