私はAndengineを使用してアンドロイドアプリを作成しています。このアプリケーションの一部では、画面上のスプライトのグループからいくつかのスプライトを選択する必要があり、選択したスプライトが別の色に変わります(次のタイルに移動する)。アニメーションスプライトとしてそれらをすべて宣言し、私はそれぞれに同じテクスチャを使用しています。問題は、スプライトを選択すると、すべてのスプライトが、選択したものだけでなく、次のタイルに移動することです。 1つのスプライトの変更をどうすればできますか?1つのスプライトでアニメーションを作成するだけで、すべてのスプライトがアニメーション化されます。 Andengine
Iセットアップテクスチャやその他もろもろのはここです:私は実際にスプライトを作成し、テクスチャを適用する場所
private Texture mGreenTextureAtlas;
private TiledTextureRegion mGreenBallFaceTextureRegion;
@Override
public void onLoadResources() {
/* Textures. */
...
this.mGreenTextureAtlas = new Texture(32, 32, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
...
TextureRegionFactory.setAssetBasePath("gfx/");
/* TextureRegions. */
...
this.mGreenBallFaceTextureRegion = TextureRegionFactory.createTiledFromAsset(this.mGreenTextureAtlas, this, "green_ball.png", 0, 16, 2, 1); // 64x32
this.mEngine.getTextureManager().loadTextures(this.mCueTextureAtlas, this.mGreenTextureAtlas , this.mBackgroundTexture, this.mPocketTexture);
}
がここにあります:私は、各スプライトをカプセル化
face = new AnimatedSprite(pX, pY, this.mGreenBallFaceTextureRegion);
body = PhysicsFactory.createCircleBody(this.mPhysicsWorld, face, BodyType.DynamicBody, FIXTURE_DEF);
encapsed = new Encapsulator(body, face, Encapsulator.AVOID_BALL, mFaceCount);
ballsList.add(encapsed);
、それは体だし、他のいくつかのデータを作成したオブジェクトに追加し、そのオブジェクトをArrayListに追加します。
ここにはonTouchイベントハンドラがあります。
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final ITouchArea pTouchArea,final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
if(pSceneTouchEvent.isActionDown()) {
final AnimatedSprite face = (AnimatedSprite) pTouchArea;
for(int i=0; i<ballsList.size(); i++)
{
if(face.equals(ballsList.get(i).animatedFace))
{
ballsList.get(i).toggleType(face);
System.out.println("Ball " + ballsList.get(i).id + " is now " + ballsList.get(i).type);
}
}
return true;
}
return false;
}
最後に、ここでは次のタイルに移動するための責任だキャプクラスのtoggleTypeの方法は次のとおりです。
public void toggleType(AnimatedSprite face)
{
if(this.type == AVOID_BALL)
{
this.type = HIT_BALL;
face.nextTile();
}
else if(this.type == HIT_BALL)
{
this.type = AVOID_BALL;
face.setCurrentTileIndex(0);
}
}
申し訳ありませんが、これはビット長ったらしいある場合。どんな助けもありがとうございます。
恐ろしいを;)働きました。 –