LibGDX - 创建无限循环动画

时间:2016-06-20 23:37:00

标签: java android libgdx

我正在尝试在libgdx中创建无限循环动画。问题是当我运行它时,动画将运行第一个循环,但由于NullPointerException而崩溃。

我通过在调用getKeyFrame()时将boolean循环设置为true,将动画playMode设置为循环:

currentFrame = globeAnimation.getKeyFrame(time, true);

当我运行它时,它将适用于关键帧1-40(我的动画中的帧数,但随后会因此错误而崩溃,第二次到达关键帧41时出现此错误消息:

java.lang.NullPointerException

我还尝试通过在构造函数中设置playMode来设置它:

globeAnimation = new Animation(GLOBE_ANIMATION_FRAME_RATE, globeAnimationTextureRegions, PlayMode.LOOP);

由于某些原因,当我这样做时,它给出了一个错误,说明它

cannot resovle constructor for 
Animation(float,TextureRegion[],PlayMode) constructor Animation.Animation(float,Array<? extends TextureRegion>,PlayMode)

这对我没有意义,因为框架有一个构造函数,可以获取那些确切的参数。

public Animation (float frameDuration, Array<? extends TextureRegion> keyFrames, PlayMode playMode) {

    this.frameDuration = frameDuration;
    this.animationDuration = keyFrames.size * frameDuration;
    this.keyFrames = new TextureRegion[keyFrames.size];
    for (int i = 0, n = keyFrames.size; i < n; i++) {
        this.keyFrames[i] = keyFrames.get(i);
    }

    this.playMode = playMode;
}

有人可以解释为什么构造函数不工作或者使其工作的替代途径。

修改

菲尔·安德森发现了为什么构造函数没有解决:我不得不用

替换globeAnimationTextureRegions
new Array<TextureRegion>(globeAnimationTextureRegions).

要解析的构造函数。

1 个答案:

答案 0 :(得分:2)

您收到此错误...

cannot resovle constructor for 
Animation(float,TextureRegion[],PlayMode) constructor Animation.Animation(float,Array<? extends TextureRegion>,PlayMode)

因为你传递了一个TextureRegions的Java数组,参数类型是一个通用类型TextureRegion的libGdx数组对象。

尝试类似......

globeAnimation = new Animation(GLOBE_ANIMATION_FRAME_RATE, new Array<TextureRegion>(globeAnimationTextureRegions), PlayMode.LOOP);