Я использую AndEngine для создания игры.
Я случайно добавил в свой код спрайты, которые появляются примерно каждую секунду.
Мне сообщили, что использование Generic Pool сэкономит сборку мусора в моем случае, что приведет к задержке игры в определенные моменты времени.
Итак, вот что мне удалось придумать для моего GenericPool ..
public class FruitPool extends GenericPool<Sprite> {
private Sprite msprite;
public FruitPool(Sprite sprite) {
if (sprite == null) {
// Need to be able to create a Sprite so the Pool needs to have a TextureRegion
throw new IllegalArgumentException("The texture region must not be NULL");
}
msprite = sprite;
}
/**
* Called when a Bullet is required but there isn't one in the pool
*/
@Override
protected Sprite onAllocatePoolItem() {
return msprite;
}
/**
* Called when a Bullet is sent to the pool
*/
@Override
protected void onHandleRecycleItem(final Sprite sprite) {
msprite = sprite;
msprite.setIgnoreUpdate(true);
msprite.setVisible(false);
}
/**
* Called just before a Bullet is returned to the caller, this is where you write your initialize code
* i.e. set location, rotation, etc.
*/
@Override
protected void onHandleObtainItem(final Sprite fruit) {
fruit.reset();
}
}
Итак, как вы, ребята, видите, я создал пул, к которому я могу добавить Спрайт.
Проблема в том, что у меня есть метод, который случайным образом выбирает число от 1 до 6. И я использую параметр Switch, чтобы выбрать, какой спрайт будет добавлен на сцену.
Как я могу сделать это с GenericPool? Имеет ли он шесть разных спрайтов и может ли выбрать, какой из них будет добавлен на сцену?
Я подумал, что, может быть, я смогу создать метод, который будет добавлять каждый спрайт в пул в моей игре, а затем я застрял в той части, где я найду способ выбрать, какой спрайт выбран из пула, например, предоставить int, который требуется, чтобы выбрать спрайт.
Спасибо за помощь в Advance, ребята!