Использование нескольких листов спрайтов для одного и того же объекта AndEnginge
У меня есть несколько листов спрайтов для моего объекта (Parrot), таких как еда, перемещение слева направо, справа налево и многое другое. Я использую AndEngine Gles2.0. Как мне это реализовать? каждый раз, когда мне нужно использовать другой лист спрайта, отсоединить предыдущий и в том же месте добавить новый. Это будет беспокойно!
Кто-нибудь здесь, кто уже реализовал этот сценарий? Если я использую один лист спрайта для каждой анимации, его размер будет увеличиваться, и это приведет к исключению нехватки памяти!
1 ответ
Это мой код для выполнения анимации различных листов спрайтов.
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)
}
А вот мой метод setSelected для выполнения глубокой копии AnimatedSprite.
public void setSelectedAnimatedsprite(AnimatedSprite selectedAnimatedsprite) {
AnimatedSprite sprite = new AnimatedSprite(
selectedAnimatedsprite.getX(), selectedAnimatedsprite.getY(),
selectedAnimatedsprite.getTiledTextureRegion().deepCopy(),
selectedAnimatedsprite.getVertexBufferObjectManager());
this.selectedAnimatedsprite = sprite;
}
Я должен глубоко скопировать выбранный спрайт, потому что, если я этого не сделаю, он передаст ссылку, и setVisible(false) и отсоединение произойдет на WalkingAnimatedSprite и EatingAnimatedSprite, которые я не хочу ни в коем случае