2016-09-09 8 views
0

私はここで新しいです。 (これに対してXNAのモノゴムバリエーションを使用) 私が作成したスプライトシートをアニメーション化するためのクラスを作り直しましたが、私が遭遇した問題は、アニメーションと共にキープレスを実装しようとするとすぐにこのキーボード入力によるアニメーションの変更を実装するための助けが必要です

previousKBState = currentKBState; 
     currentKBState = Keyboard.GetState(); 

     if (previousKBState.IsKeyDown(Keys.D)) 
     { 
      playerSprite.LoadGraphic(Content.Load<Texture2D>("Sprites\\walk_right.png"), 5, 15, 672, 631, 30); 
     } 
     else if (previousKBState.IsKeyDown(Keys.A)) 
     { 
      playerSprite.LoadGraphic(Content.Load<Texture2D>("Sprites\\walk_left.png"), 5, 15, 672, 631, 30); 
     } 
     else 
     { 
      playerSprite.LoadGraphic(Content.Load<Texture2D>("Sprites\\idle_right.png"), 5, 10, 610, 423, 5); 
     } 

のように見えます

私の更新クラス)最初のフレームに貼り付け、これが私のLoadGraphicクラス

public void LoadGraphic(Texture2D texture, int rows, int columns, int width, int height, int animationSpeed) 
    { 
     this.Texture = texture; 
     this.rows = rows; 
     this.columns = columns; 
     this.width = width; 
     this.height = height; 
     this.animationSpeed = (float)1/animationSpeed; 

     totalElapsed = 0; 
     currentRow = 0; 
     currentColumn = 0; 
    } 

私の描画クラスです

public void Draw(SpriteBatch spriteBatch, Vector2 position, Color color) 
    { 
    spriteBatch.Draw(Texture, 
     new Rectangle((int)position.X, (int)position.Y, width, height), 
     new Rectangle(currentColumn * width, currentRow * height, width, height), color); 
    } 

ので、私は、私はに実行していると思う問題は、私はDまたはダウンキーを押し続けたときに、コードLoadGraphicsのラインは、アニメーションが出て再生することができます前に、他のクラスへの呼び出しを更新し続けているということです。誰もがこの あなたは正しいですあなた

答えて

0

ありがとう修正する方法を私に任意の提案を与えることができればそれが出て役立つだろう

キーが各フレームLoadGraphicを呼び出すことにより、押されている間、あなたは0にすべての値をリセットしています。正しいアニメーションがすでに再生されているかどうかを確認し、その場合は何もしないでください。

また、更新コードからContent.Load<Texture2D>()を呼び出すことも避けています。 LoadContent()メソッド内のすべてのテクスチャをロードし、必要に応じて使用します。

+0

ありがとう、私はちょうどそれをLoadContent()で読み込んだ後、 – Tenten

関連する問題