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 1idleFrames[index] = temp[i][j] - 我在 Kotlin 数组中做了一些非常基本的错误,但似乎无法修复它。

有什么想法吗?

  1. ..是结束包含。直到结束 独家.

  2. 数组从索引 0 开始,而不是 1。因此使用 i in 0 until FRAME_ROWS,例如。

  3. libGDX 数组 class 的行为很像列表。您不能直接将值分配给尚未填充的索引。因此,使用 idleFrames.add(temp[i][j]) 而不是 idleFrames[index] = temp[i][j],您可以完全摆脱 index 变量。