LibGDX 动画 Java 到 Kotlin
LibGDX Animation Java to Kotlin
我正在尝试使用 sprite sheet 将此 LibGDX 动画示例从 Java 转换为 Kotlin
这是 link 到 Java 代码片段:
https://github.com/libgdx/libgdx/wiki/2D-Animation
这是我的 Kotlin 代码:
// load the sprite sheet as a texture
idleSheet = Texture("raw/Skeleton-Idle.png".toInternalFile())
idleFrames = Array<TextureRegion>(true, FRAME_ROWS*FRAME_COLS)
// use split method to create 2d array of texture regions
// sprite sheet contains frames of equal size & alignment
var temp = TextureRegion.split(
idleSheet,
idleSheet.width / FRAME_COLS,
idleSheet.height / FRAME_ROWS
)
var index = 1
for (i in 1..FRAME_ROWS) {
for (j in 1..FRAME_COLS) {
idleFrames[index] = temp[i][j]
index ++
}
}
// initialise animation with frame interval & array of frames
idleAnimation = Animation(0.05f,idleFrames)
问题似乎是 Index 1 out of bounds for length 1
行 idleFrames[index] = temp[i][j]
- 我在 Kotlin 数组中做了一些非常基本的错误,但似乎无法修复它。
有什么想法吗?
..
是结束包含。直到结束 独家.
数组从索引 0 开始,而不是 1。因此使用 i in 0 until FRAME_ROWS
,例如。
libGDX 数组 class 的行为很像列表。您不能直接将值分配给尚未填充的索引。因此,使用 idleFrames.add(temp[i][j])
而不是 idleFrames[index] = temp[i][j]
,您可以完全摆脱 index
变量。
我正在尝试使用 sprite sheet 将此 LibGDX 动画示例从 Java 转换为 Kotlin
这是 link 到 Java 代码片段: https://github.com/libgdx/libgdx/wiki/2D-Animation
这是我的 Kotlin 代码:
// load the sprite sheet as a texture
idleSheet = Texture("raw/Skeleton-Idle.png".toInternalFile())
idleFrames = Array<TextureRegion>(true, FRAME_ROWS*FRAME_COLS)
// use split method to create 2d array of texture regions
// sprite sheet contains frames of equal size & alignment
var temp = TextureRegion.split(
idleSheet,
idleSheet.width / FRAME_COLS,
idleSheet.height / FRAME_ROWS
)
var index = 1
for (i in 1..FRAME_ROWS) {
for (j in 1..FRAME_COLS) {
idleFrames[index] = temp[i][j]
index ++
}
}
// initialise animation with frame interval & array of frames
idleAnimation = Animation(0.05f,idleFrames)
问题似乎是 Index 1 out of bounds for length 1
行 idleFrames[index] = temp[i][j]
- 我在 Kotlin 数组中做了一些非常基本的错误,但似乎无法修复它。
有什么想法吗?
..
是结束包含。直到结束 独家.数组从索引 0 开始,而不是 1。因此使用
i in 0 until FRAME_ROWS
,例如。libGDX 数组 class 的行为很像列表。您不能直接将值分配给尚未填充的索引。因此,使用
idleFrames.add(temp[i][j])
而不是idleFrames[index] = temp[i][j]
,您可以完全摆脱index
变量。