您的位置:首页 > 其它

love2d教程21--定时器

2013-03-24 21:33 302 查看
转载:来自朱大仙,感谢他的博客,并让我发布。

hump.timer是一个很强大的模板.是一个老外写的.源博客请点这里

hump.timerhump的系列之一.hump还有许多不为人知的功能.

英文好的或善于阅读网页翻译的同学可以去看源博客.

hump.timer提供了一个简单的安排时间的执行函数。可以在一些时间后运行功能。

例如,可以设置一个计时器,每5秒移动敌人一次或玩家在短时间类无敌。

模板名称

new()创建新的定时器对象
add()添加一个函数
addPeriodic()添加一个周期函数
do_for()在接下来的几秒运行一个函数
cancel()取消预定的函数
clear()删除所有的定时器和周期函数
update()更新预定函数
new()

如果你不需要多个独立的调试程序,您可以使用全局/默认计时器。

创建一个新的计时器实例,是独立的全局计时器:它将处理它自己的预定的函数列表,不影响其他计时器。同样,其他计时器也不影响全局定时器。

注意:定时器使用冒号符号(如。
instance:update(dt)
),而全局定时器使用一样(如。
Timer.update(dt)
).

参数:  没有
返回:  定时器  一个定时器实例。
示例:

  menuTimer=Timer.new()


add(delay,func)

安排一个函数func。这个函数会被在delay秒过去后执行
,
update(dt)
被称为每一帧。

注意:没有保证延迟将不超过,只有保证函数不会执行之前执行延迟已经过去了。--这个不懂

func
作为本身惟一参数。这是实用的实现周期性行为的方法。

参数:  number
delay
函数将被推迟的秒数。  function
func
这个功能讲在推迟后执行。
返回:table定时器处理。
示例:

--让玩家在5秒里无敌
player.isInvincible=true--无敌
Timer.add(5,function()player.isInvincible=falseend)--5秒后取消无敌


--每隔5秒输出一次"foo"
Timer.add(1,function(func)print("foo")Timer.add(1,func)end)


--使用全局计算器
menuTimer:add(1,finishAnimation)


addPeriodic(delay,func)

添加一个函数,将每delay秒执行一次func。

如果
count
省略了,这个函数会被调用,直到它返回吗
false
cancel(handle)
clear()
被称为。--不懂

参数:  number
delay
函数将被推迟的秒数。  function
func
这个功能讲在推迟后执行。number
count(可选参数)
被称为次数。
返回:table定时器处理。
示例:

--每一秒开关一下灯
Timer.addPeriodic(1,function()light:toggleLight()end)


--闪烁的球员的形象,只要他是无敌的.
Timer.addPeriodic(0.1,function()
player:flipImage()
returnplayer.isInvincible
end)


do_for(delay,func,after)

在接下来的delay秒运行
func(dt)
。函数每次调用
update(dt)
被称为。随意地运行
after()
一旦
delta
秒已经过去了。--不懂

after()
将收到本身作为惟一参数。

注意:你不能添加新的计时器
func(dt)
,因为这可能导致崩溃。

参数:  number
delay
函数将被推迟的秒数。  function
func
功能要求
update(dt)
.
functionafter
(可选)一个函数被称为三角洲秒之后。
返回:  table  定时器处理。
例子:

--播放5秒动画
Timer.do_for(5,function(dt)flash:update(dt)end)


cancel(handle)

取消一个计时器的执行。

参数:table
handle
这个功能被取消。
返回:  没有什么
示例:

functiontick()
print('tick...tock...')
end
handle=Timer.addPeriodic(1,tick)
--之后
Timer.cancel(handle)--而不是:Timer.cancel(tick)


clear()

删除所有的计时器和周期函数,功能尚未执行的将会被丢弃。

例子:

Timer.clear()


menu_timer:clear()


update(dt)

love.update(dt)使用这个,更新定时器.


例子:

functionlove.update(dt)
do_stuff()
Timer.update(dt)
end


functionmenuState:update(dt)
self.timer:update(dt)
end


半山附注:

最后两个例子,意思是要在love.update(dt)里调用Timer.update(dt)来启动定时器,因为定时器通过dt来计时,

或者在hump.gamestate里调用self.timer:update(dt)启动定时器,其中gamestate是hump里的另一个库。

gamestate指游戏状态,由于它也要在love.update(dt)里调用,如果在gamestate里调用定时器,就相当于在

love.update(dt)里调用了定时器。

在游戏里定时器是很重要的一环,有了定时器可以很方便的实现与时间有关的特效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: