如何通过点击启动循环功能,并在下一次点击 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 )

我没有试过那个代码,所以可能有错别字。