我正在尝试在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;
}
有人可以解释为什么构造函数不工作或者使其工作的替代途径。
修改
菲尔·安德森发现了为什么构造函数没有解决:我不得不用替换globeAnimationTextureRegionsnew Array<TextureRegion>(globeAnimationTextureRegions).
要解析的构造函数。
答案 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);