Java LibGDX是否有动画演员?
在LibGDX中,是否有一个演员是动画演员(拍摄动画),当添加到舞台上时,会自动制作动画,还是必须在中实现自己的图像类并自己制作动画?就像你一样,我没有找到动画演员,所以我自己创建了: AnimatedActor.java:Java LibGDX是否有动画演员?,java,libgdx,Java,Libgdx,在LibGDX中,是否有一个演员是动画演员(拍摄动画),当添加到舞台上时,会自动制作动画,还是必须在中实现自己的图像类并自己制作动画?就像你一样,我没有找到动画演员,所以我自己创建了: AnimatedActor.java: public class AnimatedActor extends Image { private final AnimationDrawable drawable; public AnimatedActor(AnimationDrawable draw
public class AnimatedActor extends Image
{
private final AnimationDrawable drawable;
public AnimatedActor(AnimationDrawable drawable)
{
super(drawable);
this.drawable = drawable;
}
@Override
public void act(float delta)
{
drawable.act(delta);
super.act(delta);
}
}
AnimationDrawable.java:
class AnimationDrawable extends BaseDrawable
{
public final Animation anim;
private float stateTime = 0;
public AnimationDrawable(Animation anim)
{
this.anim = anim;
setMinWidth(anim.getKeyFrameAt(0).getRegionWidth());
setMinHeight(anim.getKeyFrameAt(0).getRegionHeight());
}
public void act(float delta)
{
stateTime += delta;
}
public void reset()
{
stateTime = 0;
}
@Override
public void draw(SpriteBatch batch, float x, float y, float width, float height)
{
batch.draw(anim.getKeyFrame(stateTime), x, y, width, height);
}
}
我只是创建了一个“AnimatedImage”actor类,它只将动画作为参数(不需要自定义可绘制类)。我认为这个解决方案比上面的简单得多
animateImage.java:
public class AnimatedImage extends Image
{
protected Animation animation = null;
private float stateTime = 0;
public AnimatedImage(Animation animation) {
super(animation.getKeyFrame(0));
this.animation = animation;
}
@Override
public void act(float delta)
{
((TextureRegionDrawable)getDrawable()).setRegion(animation.getKeyFrame(stateTime+=delta, true));
super.act(delta);
}
}
我也做了类似的事情。我会等待,看看是否有人能指出一个实际的演员类,但如果没有,我会将此标记为答案。非常感谢您的片段,善良的先生。这似乎比“直接”方法慢一点:TextureRegion frame2=bird_07.getKeyFrame(stateTime,true);stage.getSpriteBatch().begin();stage.getSpriteBatch().draw(currentFrame,1000700);知道为什么吗?我认为在这种情况下扩展
Image
不是很有用。您可以扩展Actor
并在其中存储动画。图像希望有可绘制的
s,而这并不像纹理区域
s和其他区域那样舒适,并且您不需要制作自己的可绘制图像。您还可以将数据存储两次,分别存储在Image
和AnimatedActor
@Mr.Developer中。Libgdx理论上是跨平台的,但我没有在iOS上测试它。