我正在使用精灵和动画精灵。我使用动画精灵16帧。用于左,右,上,下和最后4帧的爆炸动画。
//animSprite.setCurrentTileIndex(leftCount);
当动画精灵与精灵碰撞时..我想显示最后4帧,持续5秒。如何使用andengine。我尝试使用Thread.sleep,但它不起作用。
//对于我正在使用的更新
scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() {
}
@Override
public void onUpdate(final float pSecondsElapsed) {
checkCollision();
}
我能在logcat中获得最后4帧数。但是屏幕没有更新..
如何刷新场景。
checkCollision()
{
if(sprite.collidesWith(animSprite))
try
{
for (int i = 0; i < 4; i++) {
animSprite.setCurrentTileIndex(animBlast);
Log.v("balst",""+animBlast);
animBlast++;
if (animBlast> 15) {
animBlast= 12;
}
Thread.sleep(10);
}
}
catch (Exception e) {
// e.printStackTrace();
}
}
答案 0 :(得分:2)
对于AnimatedSprite
,您有一个sprite.animate(long[] pFrameDurations, int pFirstTileIndex, int pLastTileIndex, int loopCount)
方法,可以loopCount
从[{1}}更改为pFirstTileIndex
的{{1}}个循环,并且还会定义帧持续时间。我觉得这就是你要找的东西。
答案 1 :(得分:2)
您不应在更新线程中使用Thread.sleep()
,因为这会阻止所有其他更新并重新绘制。而是像Egor所说的那样研究AnimatedSprite.animate()
方法。
如果你想要类似睡眠的东西,那么在AndEngine中使用TimerHandler
。将false
更改为true
以获得重复计时器。
TimerHandler my_timer = new TimerHandler(10, false,
new ITimerCallback() {
@Override
public void onTimePassed(final TimerHandler pTimerHandler) {
// Do your thing
}
});
scene.registerUpdateHandler(my_timer);