Lua timer.performWithDelay()在变量重新分配时不返回表 球门
我有一个全局变量用来存储timer.performWithDelay返回的表。我的目标是,在场景中:show()函数用于取消计时器,并使用新的延迟重新创建计时器 问题 当重新创建计时器时,我在用于存储表的变量中得到一个nil返回值 代码: 控制台输出:Lua timer.performWithDelay()在变量重新分配时不返回表 球门,lua,coronasdk,Lua,Coronasdk,我有一个全局变量用来存储timer.performWithDelay返回的表。我的目标是,在场景中:show()函数用于取消计时器,并使用新的延迟重新创建计时器 问题 当重新创建计时器时,我在用于存储表的变量中得到一个nil返回值 代码: 控制台输出: updating table: 095D9CA8 nil 这里发生了什么事? timer.cancel()是否完全删除timerVar变量? 如果我不能保留计时器,我如何才能绕过这个问题,使计时器表以相同的名称和相同的范围存储,但重新生成?我尝
updating
table: 095D9CA8
nil
这里发生了什么事?
timer.cancel()是否完全删除timerVar变量?如果我不能保留计时器,我如何才能绕过这个问题,使计时器表以相同的名称和相同的范围存储,但重新生成?我尝试重现您的问题,但得到了解决
updating
15:28:47.324 table: 0091F958
15:28:47.324 table: 0772C590
15:28:47.324 WARNING: timer.resume( timerId ) ignored because timerId was not paused.
我的代码:
梅因·卢阿
local composer = require( 'composer' )
composer.gotoScene( 'test' )
测试
local composer = require( "composer" )
local scene = composer.newScene()
local timerVar
local delay = 1000
local function timerFunction()
end
local function update()
print("updating")
print(timerVar)
timer.cancel(timerVar)
timerVar = timer.performWithDelay(delay, timerFunction, 0)
print(timerVar)
end
function scene:create( event )
local sceneGroup = self.view
timerVar = timer.performWithDelay(delay, timerFunction, 0)
end
function scene:show( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == "will" ) then
update()
timer.resume(timerVar)
elseif ( phase == "did" ) then
end
end
function scene:hide( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == "will" ) then
timer.pause(timerVar)
elseif ( phase == "did" ) then
end
end
function scene:destroy( event )
local sceneGroup = self.view
end
scene:addEventListener( "create", scene )
scene:addEventListener( "show", scene )
scene:addEventListener( "hide", scene )
scene:addEventListener( "destroy", scene )
return scene
尝试安装Corona的最新稳定版本。这在技术上不是对我问题的直接回答,但它确实解决了我的问题,因此我将在这里为未来用户提供解决方法。我可以通过简单地更改计时器的延迟来避免完全取消计时器。这可以简单地实现:
timerVar._delay = newDelay
注意延迟变量之前的底部,很容易遗漏
这允许我更新延迟,而无需创建新的计时器。这与独立Lua无关。请告诉我们Lua在这里运行的上下文。谢谢,但不幸的是,即使有Corona、Windows 8和VS code(my IDE)的最新更新,问题仍然存在。
timerVar._delay = newDelay