스프라이트 풀은 실제로 이해하지 못하기 때문에 어떻게 작동하는지 알고 싶습니다. 내가하려는 것은 사용자가 버튼을 터치 할 때마다 임의의 스프라이트를 표시하는 것입니다 (이미 컨트롤을 관리하고 있습니다). 그러나 동일한 스프라이트 만 반복해서 표시하기 때문에 코드가 올바르게 보이지 않습니다. 스프라이트 풀이있는 임의의 스프라이트
이
내 코드입니다 :public class SpritePool extends GenericPool<Sprite> {
private ITextureRegion mTexture1, mTexture2, mTexture3, mTexture4, mTexture5;
private VertexBufferObjectManager mVertexBufferObjectManager;
private Sprite sprite = null;
public SpritePool(ITextureRegion pTextureRegion1, ITextureRegion pTextureRegion2, ITextureRegion pTextureRegion3
, ITextureRegion pTextureRegion4, ITextureRegion pTextureRegion5, VertexBufferObjectManager pVerTexBufferObjectManager){
this.mTexture1 = pTextureRegion1;
this.mTexture2 = pTextureRegion2;
this.mTexture3 = pTextureRegion3;
this.mTexture4 = pTextureRegion4;
this.mTexture5 = pTextureRegion5;
this.mVertexBufferObjectManager = pVerTexBufferObjectManager;
}
@Override
protected Sprite onAllocatePoolItem() {
YesOrNoActivity.setRoll_1(MathUtils.RANDOM.nextInt(5) + 1);
switch(YesOrNoActivity.getRoll_1()){
case 1:
sprite = new Sprite(0, 0, this.mTexture1, this.mVertexBufferObjectManager);
break;
case 2:
sprite = new Sprite(0, 0, this.mTexture2, this.mVertexBufferObjectManager);
break;
case 3:
sprite = new Sprite(0, 0, this.mTexture3, this.mVertexBufferObjectManager);
break;
case 4:
sprite = new Sprite(0, 0, this.mTexture4, this.mVertexBufferObjectManager);
break;
case 5:
sprite = new Sprite(0, 0, this.mTexture5, this.mVertexBufferObjectManager);
break;
}
return sprite;
}
public synchronized Sprite obtainPoolItem(final float pX, final float pY) {
Sprite sprite = super.obtainPoolItem();
sprite.setPosition(pX, pY);
sprite.setVisible(true);
sprite.setIgnoreUpdate(false);
sprite.setColor(1,1,1);
return sprite;
}
@Override
protected void onHandleRecycleItem(Sprite pItem) {
super.onHandleRecycleItem(pItem);
pItem.setVisible(false);
pItem.setIgnoreUpdate(true);
pItem.clearEntityModifiers();
pItem.clearUpdateHandlers();
}
}
이, 너희들이 나를 도울 수 있기를 바랍니다 감사합니다 :)
와우, 정말 도움이됩니다. 그런 다음로드 할 스프라이트가 거의 없기 때문에 풀링이 실제로 필요하지 않습니다. 하지만 스프라이트를 제거하고 새 스프레드 시트를로드하고, 다시 제거하고,로드하는 등 성능에 영향을주지 않으면 서 어떻게해야합니까? 덕분에 :) 편집 : 스프라이트가 무작위로 생성됩니다, 그래서 그것은 동일한 스프라이트 –
"성능에 영향을주지 않고"흠. 스프라이트로드 및 제거는 성능에 영향을줍니다. 100 % 해결 방법은 없습니다.밝은면에서 작은 스프라이트는 성능에 큰 영향을 미치지 않습니다. –
흠 좋습니다. 문제 해결 방법을 찾아 보겠습니다. 감사! –