2016-07-14 11 views
1

TextureRegionに問題があります。私がTextureAtlasをフリップしたとき、私のキャラクターは正しい方向(TextureAtlasが反転された)でしか動かず、左方向には戻りません。誰もこの問題を解決する方法を知っていますか?Libgdx - TextureRegion.flip()

ありがとうございます。

コードは以下の通りです:

参照の問題により、一般的なコールをある
TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("texture/textures.pack")); 
TextureRegion[] walkLeftFrame = new TextureRegion[5]; 
for(int i = 0 ; i<5; i++){ 
      walkLeftFrame[i] = atlas.findRegion("bob-0"+(i+2)); 
} 
walkLeftAnimation = new Animation(RUNNING_FRAME_DURATION , walkLeftFrame); 

TextureRegion[] walkRightFrame = new TextureRegion[5]; 
for(int i=0; i<5; i++) { 
      walkRightFrame[i] = atlas.findRegion("bob-0" + (i + 2)); 
      walkRightFrame[i].flip(true, false); 
} 
walkRightAnimation = new Animation(RUNNING_FRAME_DURATION, walkRightFrame); 


if(bob.isFacingLeft()) 
       bobFrame = walkLeftAnimation.getKeyFrame(bob.getStateTime(), true); 
else 
       bobFrame = walkRightAnimation.getKeyFrame(bob.getStateTime(), true); 


spriteBatch.draw(bobFrame, bob.getPosition().x * ppuX , bob.getPosition().y * ppuY , Bob.SIZE *ppuX, Bob.SIZE * ppuY); 

答えて

2

値で呼び出して値

によって呼び出し、実引数のコピーが呼び出される関数の正式な 引数に渡され、呼び出された関数に正式 引数に加えられた変更は影響を与えませんさ呼び出し元関数の実際の引数の値は です。

呼び出しによる参照
実際の引数 の場所(アドレス)は、呼び出された関数の仮引数に渡されます。 これは、実際の引数のアドレスにアクセスすることで、呼び出された関数から を変更できることを意味します。

つまり、両方のアレイで同じTextureRegionsにアクセスしています。だからこそ、あなたのすべての地域が反転したのです。

このような何か作業をする必要があります:

TextureRegion[] walkRightFrame = new TextureRegion[5]; 
for(int i=0; i<5; i++) { 
      walkRightFrame[i] = new TextureRegion(atlas.findRegion("bob-0" + (i + 2))); 
      walkRightFrame[i].flip(true, false); 
}