2012-02-06 12 views
0

こんにちは私は、getTimer()関数を使っていくつかのターゲットを移動するので、私はゲームを一時停止するためにこれを必要とするフラッシュゲームでタイマーを停止する必要があります、ゲームが一時停止されているにもかかわらず、ゲームのポーズ解除時にgetTimer()が実行され続けるため、ターゲットが画面から消える(位置が速すぎる)。 getTimerのように、タイマーを停止する方法や、ターゲットをスムーズに動かす方法がありますか? her5eが私のコードです:ここではAS 3.0停止タイマー

//animates targets 
     private function MoveTarget(e:Event) { 

      if (!MovieClip(parent).pauseGame) { 
       //get time passed 
       timePassed = getTimer() - lastTime; 
       lastTime += timePassed; 
      } 

      //move the target 
      this.x += dx * timePassed/1000; 

      //check to see if the target is offscreen 
      switch (targetType) { 
       case "small": 
        if (dx > 0 && this.x > 771) {  //left->right target 
         deleteTarget(false); 
        } else if (dx < 0 && this.x < -26) { //left<-right target 
         deleteTarget(false); 
        } 
        break; 
       case "medium": 
        if (dx > 0 && this.x > 790) {  //left->right target 
         deleteTarget(false); 
        } else if (dx < 0 && this.x < -40) { //left<-right target 
         deleteTarget(false); 
        } 
        break; 
       case "big": 
        if (dx > 0 && this.x > 800) {  //left->right target 
         deleteTarget(false); 
        } else if (dx < 0 && this.x < -50) { //left<-right target 
         deleteTarget(false); 
        } 
        break; 
      } 

     } 

答えて

1

シンプルなソリューションですが、私はあなたがタイムステップで何を学ぶべきだと思う、それはゲームプログラミングのための重要な概念だ、Fix Your Timestep!

if (!MovieClip(parent).pauseGame) { 
    //get time passed 
    timePassed = getTimer() - lastTime; 
    lastTime += timePassed; 
} 
else 
{ 
    lastTime = getTimer(); 
    return; 
} 
+0

素晴らしい参照してください!ありがとう、なぜ私はそれについて考えなかったのか分からず、新しい目標をインスタンス化した別の問題を修正しました。なぜ、それを確認する必要がありますか? – ershin69

関連する問題