CoronaSDK著名API精解:timer.performWithDelay

1 函数介绍

简单来说就是延迟一段事件后调用某个函数。就仿佛是创建一个定时炸弹,设定爆炸时间,只是到了时间不是爆炸而是执行目标函数。

这个函数会创建并返回一个timer对象(句柄),用来给其他的timer.xxxx函数使用。例如把这个timer对象(句柄)传递给timer.cancel()函数,用来解除之前指定的目标函数的调用。

2 语法

timer.performWithDelay( delay, listener [, iterations] )

delay:Number类型,延迟的毫秒数,例如:1000=1秒

listener:Listener类型,延时到期时调用的监听函数。这也可以是一个funtion listener,也可以是一个table listener。如果是table listener,它就必须有一个timer方法,因为timer事件只会发送给这个监听函数。

iterations:(可选)指定监听函数被调用的次数。默认是1,传入0或-1表示你希望定时器永远运行下去。

3 举例

function listener

local function listener( event )
    print( "listener called" )
end

timer.performWithDelay( 1000, listener )

table listener

local listener = {}
function listener:timer( event )
    print( "listener called" )
end

timer.performWithDelay( 1000, listener )

重复1次:

-- Lua closure method

local function spawnBall( randomPosition )
    ballPosition = display.newCircle( 100, 100, 20 )
    ballPosition.x = randomPosition
end

-- Obtain a random number for the spawned object's x position
local randomPosition = 100 + math.random(200)

-- Wrap "spawnBall" and "randomPosition" inside a closure
local myClosure = function() return spawnBall( randomPosition ) end
timer.performWithDelay( 2000, myClosure, 1 )

为Timer监听器传入额外参数:(这里借助tm实际上在监听函数里可以通过event.source来获得的方式,把外部参数传递给事件监听函数)

-- Variable handle method

local function onTimer( event )
    -- Access "params" table by pointing to "event.source" (the timer handle)
    local params = event.source.params
    print( params.myParam1 )
    print( params.myParam2 )
end

-- Assign the timer to a variable "tm"
local tm = timer.performWithDelay( 1000, onTimer )
-- Assign a table of parameters to the "tm" handle
tm.params = { myParam1 = "Parameter1", myParam2 = "Parameter2" }

 

posted @ 2015-01-21 09:47  弯弓射月  阅读(2077)  评论(0编辑  收藏  举报