LibGDX getKeyFrame表示返回对象而不是TextureRegion / frame

时间:2017-01-18 20:31:07

标签: java android libgdx

遵循本教程:https://www.youtube.com/watch?v=1fJrhgc0RRw

我得到" Gradle错误:不兼容的类型:对象无法转换为TextureRegion"

在这一行:

region = heroJump.getKeyFrame(stateTimer);

heroJump声明为:

private Animation heroJump;

并将其导入顶部:

import com.badlogic.gdx.graphics.g2d.Animation;

在Android Studio中,当您键入heroJump.getKeyFrame()时,弹出框显示Object是函数的返回类型。
在教程中,它显示了一个TexturedFrame 我导入的内容与教程相同。
我不确定为什么它没有看到返回类型是同一件事 即使我单击Animation类查看其文档,它似乎也会提供正确的返回类型。

什么没有正确完成,以便AndroidStudio / Compiler知道正确的返回类型并将编译?

2 个答案:

答案 0 :(得分:9)

该方法在API中声明为

public T getKeyFrame(float stateTime)

类定义public class Animation<T>

您有一个原始Animation实例。导入不是问题所在。声明是。

例如,您需要private Animation<TextureRegion> heroJump;并且您已经提供了Array<TextureRegion>

答案 1 :(得分:4)

您没有以编译器可以无模糊地确定它们的方式定义泛型。 Animation实际上是Animation<T>,其中需要为编译器指定T. 'fix'是在你的heroJump实例中定义T,所以如果它是一个TextureRegion,那么它需要设置为:

private Animation<TextureRegion> heroJump; 

而不是您在代码块中列出的含糊不清的形式。