如何解释 Corona SDK 程序在重新启动后出现故障的过渡效果

下面是一个简单的 Lua 程序,其中一个货架在屏幕左右移动。当屏幕被点击时,货架应该重置并从左边重新开始。 但是在此之后,transitions.to 不正常工作,因为货架开始"跳来跳去"。请问有人能帮我解决这个问题吗?

local shelf

local function movingShelf()
    shelf = display.newRect(56.5,250,85,10)  --显示货架

    local moveLeft --移动货架
    local function moveRight()
        transition.to(shelf, {time = 5000, x = 261, onComplete = moveLeft})
    end
    moveLeft = function()
        transition.to(shelf, {time = 5000, x = 57.5, onComplete = moveRight})
    end
    moveRight()
end

local function restart() -- 重新启动程序
    shelf:removeSelf()
    movingShelf()
end

movingShelf()
Runtime:addEventListener("tap", restart) -- 点击以重新启动
点赞
用户3455883
用户3455883

moveLeft()moveRight() 中你启动的过渡效果被应用于 shelf 上,但你没有取消它们。这可能会导致这种不稳定的行为。

要正确地移除一个 DisplayObject,你需要取消它所涉及的任何过渡效果。在你的 restart 函数中,你应该在使用 shelf: removeSelf() 删除 DisplayObject 前进行 transition.cancel( shelf ) 操作。最后,为了安全起见,加上 shelf=nil(在 Corona 中移除 DisplayObject 时推荐这样做以避免内存泄漏)。

2017-04-09 02:22:29