2014-02-20 4 views
0

У меня проблема: Я хочу сохранить счет, когда я «hittest». Я использую следующий код:AS3 hittest продолжает бить

private function fnMoveMap():void 
    { 
     for (var i:int = 0; i < vPipeMax; i++) 
     { 

      var tmpPipe = _conMap.getChildAt(i); 
      //trace (tmpPipe.name); 

      if (tmpPipe._HIT.hitTestPoint(_P.x, _P.y, true)) 
      { 
       tmpPipe.visible = false; 

       //stage.removeEventListener(Event.ENTER_FRAME, setScore); 
       vScores++; 
       txtScores.text = vScores.toString(); 
       //break; 
      } 
      //reset pos 
      if (tmpPipe.x < 0) 
      { 
       //stage.addEventListener(Event.ENTER_FRAME, setScore); 
       tmpPipe.visible = true; 
       tmpPipe.x = 1050 - vXSpeed; 
       tmpPipe.y = randomRangeMC(minPipeY, maxPipeY); 
       //set score 
       //vScores++; 
       //txtScores.text = vScores.toString(); 
      } 
      else 
      { 
       tmpPipe.x -= vXSpeed; 

      } 
     } 
    } 

var vScores ведет отсчеты 4-8 раз. Как я могу сосчитать один?

+0

Ну я не знаю, что 'vPipeMax' есть, но вы цикл несколько раз в том, что для цикла (потенциально), так что моя догадка, поэтому ваш счет увеличивается на 4-8 каждый раз при его запуске. – snollygolly

+0

vPipeMax is 3. Я знаю его в цикле, но как я могу сохранить его из нескольких hittests? – user1631575

ответ

0

Причина, по которой ваша переменная vScores увеличивается на 4-8, заключается в том, что вы циклически повторяетесь с петлей for через vPipeMax.

Вам необходимо либо перестроить свой код, чтобы этого не произошло, либо break вышел из цикла, как только вы увеличиваете счет.

Смежные вопросы