2012-08-06 3 views
1

내 개체 (앵무새)에 대해 여러 개의 스프라이트 시트가 먹고, 왼쪽에서 오른쪽, 오른쪽에서 왼쪽으로 이동하는 것과 훨씬 더 많습니다. AndEngine gles2.0을 사용하고 있습니다. 어떻게 구현해야합니까? 매번 다른 스프라이트 시트를 사용해야 할 때마다 이전 스프레드 시트를 분리하고 동일한 위치에 새 스프라이트 시트를 추가하십시오. 이것은 정신없이 바쁠 것입니다!동일한 개체에 여러 개의 스프라이트 시트 사용 AndEnginge

이 시나리오를 이미 구현 한 사람은 누구입니까? 모든 애니메이션에 단일 스프라이트 시트를 사용하면 크기가 커지고 메모리가 부족한 예외가 발생합니다!

+0

이것을 해결할 수 있었습니까? 나는 현재 같은 상황에있다. – glogic

+0

예, 내 대답을보십시오. – Waqas

답변

2

이것은 다른 스프라이트 시트의 애니메이션을 수행하는 코드입니다.

public void performEatingAnimation(Bird b) { 
    float x = b.getSelectedAnimatedsprite().getX(); 
    float y = b.getSelectedAnimatedsprite().getY(); 
    b.getSelectedAnimatedsprite().setVisible(false); 

    b.getSelectedAnimatedsprite().detachSelf(); 
    b.setSelectedAnimatedsprite(b.getEatingAnimatedsprite()); 

    attachObjectWithNewPosition(b.getSelectedAnimatedsprite(), x, y); 
    b.getSelectedAnimatedsprite().animate(60, 2); 

} 

public void performWalkAnimation(Bird b) { 
    float x = b.getSelectedAnimatedsprite().getX(); 
    float y = b.getSelectedAnimatedsprite().getY(); 
    b.getSelectedAnimatedsprite().setVisible(false); 

    b.getSelectedAnimatedsprite().detachSelf(); 
    b.setSelectedAnimatedsprite(b.getWalkingAnimatedsprite()); 

    attachObjectWithNewPosition(b.getSelectedAnimatedsprite(), x, y); 
    b.getSelectedAnimatedsprite().animate(60, 0) 
} 

그리고 여기 AnimatedSprite의 deepCopy를 수행하는 내 setSelected 메소드가 있습니다.

public void setSelectedAnimatedsprite(AnimatedSprite selectedAnimatedsprite) { 
    AnimatedSprite sprite = new AnimatedSprite(
      selectedAnimatedsprite.getX(), selectedAnimatedsprite.getY(), 
      selectedAnimatedsprite.getTiledTextureRegion().deepCopy(), 
      selectedAnimatedsprite.getVertexBufferObjectManager()); 

    this.selectedAnimatedsprite = sprite; 
} 

나는 내가 그것을 참조하고는, setVisible (거짓)을 통과하고 난 anycase

에서 원하지 않는 WalkingAnimatedSprite 및 EatingAnimatedSprite에 일어날 분리 것을하지 않으면 때문에 선택된 스프라이트를 deepCopy해야
관련 문제