Scala使用LibGDX创建Animation时出现类型不匹配错误
问题原因
- LibGDX的
Animation类的多参数构造有两种重载:- 第一种接收
float frameDuration, com.badlogic.gdx.utils.Array<T> keyFrames - 第二种接收可变参数:
float frameDuration, T... keyFrames
- 第一种接收
- 你当前传入的是Scala原生
Array[TextureRegion],Scala默认不会将原生数组自动适配为Java可变参数,也不会自动转为LibGDX自定义的Array类型,编译器会直接把整个Array对象当做单个T类型参数传入可变参数重载,就触发了类型不匹配的报错:要求传入TextureRegion,实际传入了Array[TextureRegion]。
解决方法
两种方案二选一即可:
- 方案1:添加Scala可变参数展开标记,告诉编译器将数组展开为逐个参数匹配可变参数重载
直接修改构造Animation的代码为:walkAnimation = new Animation(1f/4f, frames:_*) - 方案2:将Scala原生Array转为LibGDX自带的Array类型
先导入LibGDX的Array类(重命名避免和Scala原生Array冲突),再做转换:// 导入语句放在文件顶部 import com.badlogic.gdx.utils.{Array => GdxArray} // 构造Animation的代码 walkAnimation = new Animation(1f/4f, new GdxArray(frames))
修改完成后即可正常编译运行。
内容的提问来源于stack exchange,提问作者edoelas
相关产品推荐
相关产品推荐

