如何通过点击启动循环功能,并在下一次点击 Corona 中的同一按钮时停止循环功能?
How to start a looping function with a tap, and stop it with the next tap on the same button in Corona?
我想创建一个按钮,它可以通过点击启动一个循环功能(假设是一艘连续发射激光的船),然后在按钮上再次点击停止。我是 Lua 的新手,如果这是部落之类的,我很抱歉。
我已经尝试了所有方法,而且我知道我应该对这种事情使用触摸,但我只是想让它打开和关闭循环。我已经用我在这里找到的代码实现了这个 https://forums.coronalabs.com/topic/2018-touch-tap-event-endless-loop-bug/ 但是内存用完了,因为它每毫秒不断发送警告,定时器已经暂停或恢复:
警告:timer.resume( timerId ) 被忽略,因为 timerId 没有暂停
警告:timer.pause( timerId ) 被忽略,因为 timerId 已经暂停。
--button
local fire = display.newRect( 0, 0, display.contentWidth, display.contentHeight )
fire:setFillColor( 128, 64, 64 )
--state off
function stateoff()
timer.pause( timer1 )
fire:removeEventListener( "tap", stateoff )
fire:addEventListener( "tap", stateon )
return true
end
--state on
function stateon()
function()
print("fire somthing")
timer.resume( timer1 )
fire:removeEventListener( "tap", stateon )
fire:addEventListener( "tap", stateoff )
end
--loop
timer1 = timer.performWithDelay(1000,stateon,0)
-- start
fire:addEventListener( "tap", stateon )
我只想要一个调用循环函数的 on/off 按钮,
或将邮件丢弃的方法,
我会做更多类似的事情:
local fireTimer = nil
local function fireLaser()
-- your code to create the laser beam and
-- set it in motion.
end
local function toggleLaserFire( event )
if fireTimer then
timer.cancel( fireTimer )
fireTimer = nil
else
fireTimer = timer.performWithDelay( 1000, fireLaser, 0 )
fireLaser() -- you probably don't want to wait a second before it fires
-- so go ahead and fire one off.
end
end
fire:addEventListener( "tap", toggleLaserFire )
我没有试过那个代码,所以可能有错别字。
我想创建一个按钮,它可以通过点击启动一个循环功能(假设是一艘连续发射激光的船),然后在按钮上再次点击停止。我是 Lua 的新手,如果这是部落之类的,我很抱歉。
我已经尝试了所有方法,而且我知道我应该对这种事情使用触摸,但我只是想让它打开和关闭循环。我已经用我在这里找到的代码实现了这个 https://forums.coronalabs.com/topic/2018-touch-tap-event-endless-loop-bug/ 但是内存用完了,因为它每毫秒不断发送警告,定时器已经暂停或恢复:
警告:timer.resume( timerId ) 被忽略,因为 timerId 没有暂停
警告:timer.pause( timerId ) 被忽略,因为 timerId 已经暂停。
--button
local fire = display.newRect( 0, 0, display.contentWidth, display.contentHeight )
fire:setFillColor( 128, 64, 64 )
--state off
function stateoff()
timer.pause( timer1 )
fire:removeEventListener( "tap", stateoff )
fire:addEventListener( "tap", stateon )
return true
end
--state on
function stateon()
function()
print("fire somthing")
timer.resume( timer1 )
fire:removeEventListener( "tap", stateon )
fire:addEventListener( "tap", stateoff )
end
--loop
timer1 = timer.performWithDelay(1000,stateon,0)
-- start
fire:addEventListener( "tap", stateon )
我只想要一个调用循环函数的 on/off 按钮, 或将邮件丢弃的方法,
我会做更多类似的事情:
local fireTimer = nil
local function fireLaser()
-- your code to create the laser beam and
-- set it in motion.
end
local function toggleLaserFire( event )
if fireTimer then
timer.cancel( fireTimer )
fireTimer = nil
else
fireTimer = timer.performWithDelay( 1000, fireLaser, 0 )
fireLaser() -- you probably don't want to wait a second before it fires
-- so go ahead and fire one off.
end
end
fire:addEventListener( "tap", toggleLaserFire )
我没有试过那个代码,所以可能有错别字。