我的对象(鹦鹉)有多个精灵表,比如吃东西、从左到右、从右到左等等。我正在使用 AndEngine gles2.0。我应该如何实施?每次我必须使用不同的精灵表时,分离前一个并在同一位置添加新的。这将是忙碌的!
这里有人已经实现了这种场景吗?如果我为每个动画使用单个精灵表,它的大小会增加,并且会抛出内存不足的异常!
我的对象(鹦鹉)有多个精灵表,比如吃东西、从左到右、从右到左等等。我正在使用 AndEngine gles2.0。我应该如何实施?每次我必须使用不同的精灵表时,分离前一个并在同一位置添加新的。这将是忙碌的!
这里有人已经实现了这种场景吗?如果我为每个动画使用单个精灵表,它的大小会增加,并且会抛出内存不足的异常!
这是我执行不同精灵表动画的代码。
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 的 deepCopy。
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 上,我无论如何都不想要