table.insert 没有添加参数 Lua

table.insert is not adding the parameter Lua

我制作了这个小动画处理程序代码,我想将在一个函数中定义的动画网格名称添加到另一个 table(网格,在一个名为 sprite 的 table 中) ,但是当我尝试将新网格插入 sprites.grids table 时,它不起作用并且代码在 anim8.newAnimation(grid('1-'... sattin 处崩溃,我给出了一个零网格。我不明白。 :( 代码:

require("table")

function createSprite(x, y, path)
    love.graphics.setDefaultFilter("nearest", "nearest")
    local sprite = {
        position = {
            x = x,
            y = y
        },
        sprite = love.graphics.newImage(path),
        currentAnimation,
        animations,
        grids = {}
    }

    function sprite:createSpriteGrid(animation, maxFrames)
        animation = anim8.newGrid(self.sprite:getWidth() / maxFrames, self.sprite:getHeight(), self.sprite:getWidth(), self.sprite:getHeight())
        table.insert(self.grids, animation)
    end

    function sprite:setAnimation(grid, maxFrames, time)
        self.currentAnimation = anim8.newAnimation(grid('1-'.. maxFrames .. '', 1), time)
    end

    function sprite:update(dt)
        self.currentAnimation:update(dt)
    end

    function sprite:draw(scale)
        self.currentAnimation:draw(self.sprite, self.position.x, self.position.y, nil, scale)
    end

    return sprite
end

shop = createSprite(630, 160, "assets/shop.png")
shop:createSpriteGrid(shopAnim, 6)
shop:setAnimation(shop.grids.shopAnim, 6, 0.17)

特别是那个函数很可能没有做你想做的事:

    function sprite:createSpriteGrid(animation, maxFrames)
        animation = anim8.newGrid(self.sprite:getWidth() / maxFrames, self.sprite:getHeight(), self.sprite:getWidth(), self.sprite:getHeight())
        table.insert(self.grids, animation)
    end

换句话说:您传递了 animationmaxFrames,但从不使用 animation 并立即将其替换为您的网格。然后将网格添加到 self.grids 数组,由于它是第一个条目,因此它将获得 index/key 1。因此 shop.grids.shopAnim 为零,因为您从未设置过它。 shop.grids[1] 可以。