Lua false 后函数返回错误 "if statement"

Lua function returning error after false "if statement"

我有一个功能可以将一个点移动到不同的位置。我有一个 positions table 包含每个位置的所有 Xs 和 Ys,位置计数器 (posCounter) 确实跟踪位置重点是 maxPos,这几乎是 table positions.
的长度 在此代码片段中,如果 posCounter 变量大于 3,if posCounter <= maxPos then 之后的所有内容都不应该 运行,但是 我仍然收到错误 超过 table的极限。

local maxPos = 3
local posCounter = 1
local function movePointToNext( event )
    if posCounter <= maxPos then
        posCounter = posCounter + 1
        transition.to( pointOnMap, { x = positions[posCounter].x, y = positions[posCounter].y } )
    end
end
    if posCounter <= maxPos then
        posCounter = posCounter + 1

如果 posCounter == maxPos 会怎样?你的 if 执行,然后你增加它,所以它太大了(等于 maxPos + 1),然后你尝试用它索引,因此给你一个错误。

你要么想改变你的 if 停止在 posCounter == maxPos - 1,这样递增后它仍然是正确的;或者您想在 索引之后移动您的增量 (取决于您的代码的预期行为)。

选项 1

local maxPos = 3
local posCounter = 1
local function movePointToNext( event )
    if posCounter < maxPos then
        posCounter = posCounter + 1
        transition.to( pointOnMap, { 
            x = positions[posCounter].x, 
            y = positions[posCounter].y } )
    end
end

选项 2

local maxPos = 3
local posCounter = 1
local function movePointToNext( event )
    if posCounter <= maxPos then
        transition.to( pointOnMap, { 
            x = positions[posCounter].x, 
            y = positions[posCounter].y } )
        posCounter = posCounter + 1
    end
end