我有一个Sprite每秒产生一次,我要做的就是将精灵纹理改为动画,并且当它触摸它时它将恢复到正常纹理。
public void draw(SpriteBatch batch){
enemyIterator=enemies.iterator(); //arraylist iterator
boolean touched=Gdx.input.justTouched();
float touchX=Gdx.input.getX();
//rendering and making the current sprite move
while(enemyIterator.hasNext()){
Sprite sprite=enemyIterator.next();
sprite.draw(batch);
sprite.translateY(deltaTime*movement);
//detecting if the screen is touched and if the inputX is inside of the sprite.
if(touched==true && touchX > sprite.getX() && touchX < sprite.getX()+sprite.getWidth()){
enemyIterator.remove(); //removing the sprite when touched.
Pools.free(sprite); //freeing the Pools
}
}
答案 0 :(得分:1)
从纹理更改为动画
创建一个名为MySprite的Sprite子类,然后覆盖draw(batch)
方法。
在覆盖绘制方法中,如果要绘制纹理,只需调用super.draw(batch)
,即可使用动画绘制代码。您可以使用Gdx.graphics.getDeltaTime()
为什么必须指定timePassed
您的程序将以不同的帧速率运行到动画中,因此通过告诉动画已经过了多少时间,它可以根据它自己的帧速率确定它应该在哪个帧上。
请注意,您的应用的帧率可能会因帧到帧而异,具体取决于它需要做多少工作。