2012-01-22 9 views
0

私はthisチュートリアルのXNAを習得しようとしていますが、スムーズに画像をスクロールするのに問題があります。私の最初のイメージが丸く戻って再びスクロールループを開始するまでは、すべてうまく動作します。スクロールバックグラウンドがスムーズでない

奇妙なことは、数秒かかると画像を描画してからスクロールを続けると予想される場所に表示されているように見えることです。バックグラウンドを赤に変更して、何らかの理由でイメージが読み込まれていないかどうかを確認しましたが、バックグラウンドスプライトのテクスチャに使用されている同じ青色の連続ストリームが得られます。

提案がありますか?以下は、更新メソッドのコードです。

protected override void Update(GameTime gameTime) 
    { 
     // Allows the game to exit 
     if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) 
      this.Exit(); 

     // TODO: Add your update logic here 
     if (bg1.getPosition().X < -bg1.size.Width) 
     { 
      bg1.setPosition(new Vector2(bg5.getPosition().X + bg5.size.Width,0)); 
     } 
     if (bg2.getPosition().X < -bg2.size.Width) 
     { 
      bg2.setPosition(new Vector2(bg1.getPosition().X + bg1.size.Width, 0)); 
     } 
     if (bg3.getPosition().X < -bg3.size.Width) 
     { 
      bg3.setPosition(new Vector2(bg2.getPosition().X + bg2.size.Width, 0)); 
     } 
     if (bg4.getPosition().X < -bg4.size.Width) 
     { 
      bg4.setPosition(new Vector2(bg3.getPosition().X + bg3.size.Width, 0)); 
     } 
     if (bg5.getPosition().X < -bg5.size.Width) 
     { 
      bg5.setPosition(new Vector2(bg4.getPosition().X + bg4.size.Width, 0)); 
     } 

     Vector2 direction = new Vector2(-1,0); 
     Vector2 speed = new Vector2(100.0f/1000.0f,0.0f); 

     bg1.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 
     bg2.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 
     bg3.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 
     bg4.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 
     bg5.updatePosition((direction * speed) * (float)gameTime.ElapsedGameTime.TotalMilliseconds); 

     base.Update(gameTime); 
    } 

答えて

1

if文を見ると、ある時点で破損します。

すべての画像を左に移動しています。次に、幅に達すると、別の画像の位置に基づいてリセットされ、左に移動します。

このロジックには欠陥があり、改訂が必要です。

関連する問題