2011-11-08 18 views
1

私は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); 
     } 
    } 

申し訳ありませんが、これはビット長ったらしいある場合。どんな助けもありがとうございます。

答えて

関連する問題