2011-11-08 2 views
1

Andengine을 사용하여 Android 앱을 만들고 있습니다. 앱의 한 부분으로 사용자가 화면의 스프라이트 그룹에서 몇 가지 스프라이트를 선택해야합니다. 그러면 선택한 스프라이트가 다른 색상으로 바뀝니다 (즉, 다음 타일로 이동). 나는 그것들을 모두 움직이는 스프라이트로 선언했고 나는 각각에 대해 같은 질감을 사용하고 있습니다. 문제는 일단 스프라이트를 선택하면 모든 스프라이트는 내가 선택한 것뿐만 아니라 다음 타일로 이동한다는 것입니다. 하나의 스프라이트 변경 만하는 방법은 무엇입니까?오직 하나의 스프라이트가 움직이기를 원한다. Andengine

은 여기 어디 설정 질감과 이것 저것 : 나는 각 스프라이트를 캡슐화

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); 

이의 몸, 그리고 몇몇 다른 :

여기
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); 
     } 

내가 실제로 스프라이트를 생성하고 텍스처를 적용 어디 데이터를 내가 만든 객체에 추가 한 다음 해당 객체를 ArrayList에 추가합니다.

다음은 onTouch 이벤트 처리기입니다. 이 조금 장황한입니다

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

죄송 경우 :

@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 방법이다. 어떤 도움을 주셔서 감사합니다.

답변

관련 문제