-2

我有一个功能可以将一个点移动到不同的位置。我有一个包含每个位置的所有 X 和 Y 的位置表,一个位置计数器 ( posCounter ) 会跟踪点的位置和一个maxPos,这几乎是表位置的长度。
在此代码片段中,if posCounter <= maxPos then如果 posCounter 变量大于 3,则后面的所有内容都不应运行,但我仍然收到超出表限制的错误。

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
4

1 回答 1

2
    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
于 2022-01-26T18:41:48.363 回答