Lua timer.performWithDelay()在变量重新分配时不返回表 球门

Lua timer.performWithDelay()在变量重新分配时不返回表 球门,lua,coronasdk,Lua,Coronasdk,我有一个全局变量用来存储timer.performWithDelay返回的表。我的目标是,在场景中:show()函数用于取消计时器,并使用新的延迟重新创建计时器 问题 当重新创建计时器时,我在用于存储表的变量中得到一个nil返回值 代码: 控制台输出: updating table: 095D9CA8 nil 这里发生了什么事? timer.cancel()是否完全删除timerVar变量? 如果我不能保留计时器,我如何才能绕过这个问题,使计时器表以相同的名称和相同的范围存储,但重新生成?我尝

我有一个全局变量用来存储timer.performWithDelay返回的表。我的目标是,在场景中:show()函数用于取消计时器,并使用新的延迟重新创建计时器

问题 当重新创建计时器时,我在用于存储表的变量中得到一个nil返回值

代码: 控制台输出:

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