遵循本教程: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知道正确的返回类型并将编译?
答案 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;
而不是您在代码块中列出的含糊不清的形式。