1
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,但它给出了一个错误消息attempt to perform arithmetic on a table value: Lua error message。我怎样才能解决这个问题?

4

1 回答 1

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)
于 2014-05-04T15:43:25.437 回答