尝试对表值执行算术:Lua错误消息

时间:2014-05-04 14:47:17

标签: lua gideros

stage:addEventListener(Event.ENTER_FRAME, 
function()
Graphic:setRotation(Graphic:getRotation()+ (Timer.delayedCall(math.random(4, 8) , 
function () speed = math.random(1, 30) 
return speed
end)
))
end)

Basicallu,我要做的是,随机改变旋转速度,但由于我不希望它每秒都改变,我尝试在Gideros中使用Timer.delayedCall,但是它给出了一个错误{ {1}}。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

根据Gideros文档,Timer.delayedCall返回一个'Timer'对象,该对象应该是错误消息所指的表。 http://docs.giderosmobile.com/reference/gideros/Timer/delayedCall

我对Gideros并不熟悉,但我相信你会想要更接近这一点:

stage:addEventListener(Event.ENTER_FRAME, 
    function()
        Timer.delayedCall(math.random(4,8), 
            function()
                Graphic:setRotation( Graphic:getRotation() + math.random(1,30) )
            end)
    end)

但是,这可能会在每个ENTER_FRAME事件中触发,只是每个更改都会随机延迟。您可能希望使用控制变量,以便只有一个Timer可以挂起:

local timerPending=false
stage:addEventListener(Event.ENTER_FRAME, 
    function()
        if timerPending then return end
        timerPending=true
        Timer.delayedCall(math.random(4,8), 
            function()
                Graphic:setRotation( Graphic:getRotation() + math.random(1,30) )
                timerPending=false
            end)
    end)