找回密码
 点一下
查看: 1268|回复: 18

关于timer的问题

[复制链接]
发表于 2009-10-12 20:50:42 | 显示全部楼层 |阅读模式
如果我没记错的话,用timer肯定是比T里的时间周期事件更效率吧?

[/table]
[table=100%,#dee9df]碍于现在处于新手阶段,我不能把大量的T都写成J

所以,我想仅仅只是单纯的把T里的‘时间周期事件’换成用timer的方式来触发

这样跟原来的T的‘每隔0.05秒’事件有区别吗


[jass]
function Trig_IniTmr_01 takes nothing returns nothing
    call ConditionalTriggerExecute( gg_trg_AngleOfView )
    call ConditionalTriggerExecute( gg_trg_OperationMove )
    call ConditionalTriggerExecute( gg_trg_Menu_02 )
    call ConditionalTriggerExecute( gg_trg_Menu_03 )
endfunction

function InitTrig_IniTmr takes nothing returns nothing
      local timer tm = CreateTimer()
      call TimerStart(tm,0.05,true,function Trig_IniTmr_01)
      set tm = null
endfunction
[/jass]
发表于 2009-10-12 20:51:46 | 显示全部楼层
应该没有。
回复

使用道具 举报

 楼主| 发表于 2009-10-12 20:53:56 | 显示全部楼层

回 1楼(血戮魔动冰) 的帖子

也就是说。。我要完全吧T都转成J,然后用Timer才有区别?
回复

使用道具 举报

发表于 2009-10-12 20:56:05 | 显示全部楼层
你把T转J是应该没有问题的。
顺便说下,貌似T的那个time好像和Timer是差不多的…………
只有等待才是不能用的?
还是别的……忘了
回复

使用道具 举报

发表于 2009-10-12 20:57:42 | 显示全部楼层
区别在于
timerstart函数是直接调用function的
而周期事件则要多经过事件=》触发=》function这样的步骤
回复

使用道具 举报

发表于 2009-10-12 20:58:43 | 显示全部楼层
有多少区别呢?
回复

使用道具 举报

 楼主| 发表于 2009-10-12 20:58:56 | 显示全部楼层
难道 J的Timer 和 T的计时器到期 没区别?
回复

使用道具 举报

发表于 2009-10-12 21:06:10 | 显示全部楼层
引用第6楼蟋有的蟀于2009-10-12 20:58发表的  :
难道 J的Timer 和 T的计时器到期 没区别?

有区别。一个是Trigger相应timer到期。另一个是timer到期后自己执行的code。明显不一样啊。
回复

使用道具 举报

 楼主| 发表于 2009-10-12 21:11:54 | 显示全部楼层

回 7楼(血戮魔动冰) 的帖子

那么
用J的Timer,运行触发器,比如[jass]
function Trig_IniTmr_01 takes nothing returns nothing
    call ConditionalTriggerExecute( gg_trg_Menu_02 )
endfunction

function InitTrig_IniTmr takes nothing returns nothing
      local timer tm = CreateTimer()
      call TimerStart(tm,0.05,true,function Trig_IniTmr_01)
      set tm = null
endfunction
[/jass]与
用T直接给gg_trg_Menu_02的事件加上计时器到期
两者有区别么
回复

使用道具 举报

发表于 2009-10-12 21:15:49 | 显示全部楼层
为啥还要用到期时间来调用触发呢
直接运行函数就可以了
回复

使用道具 举报

 楼主| 发表于 2009-10-12 21:23:34 | 显示全部楼层
因为。。就目前的水平而言
我只会把简单的T写成J。。而我的移动系统用了很多T。。写成J就有点晕了

对了。。你还没回答我8楼的问题        —   —。
回复

使用道具 举报

发表于 2009-10-12 22:58:09 | 显示全部楼层
TimerStart后,Timer就已经动起来了,在Timer里面直接写动作了

计时器到期的概念也就Timer中取得自身用一用
local timer time = GetExpiredTimer() //获得最后到期的计时器 —— 也就是当前计时器
这就是jass里面的到期……和T的差别你能感受到了吧……

话说,Everguo……我就是看他的Timer教程……

哦呵……哦呵……哦呵…………哦呵呵呵……   [s:170]  [s:170]
回复

使用道具 举报

发表于 2009-10-12 23:34:25 | 显示全部楼层
我只看过朱朱的vj教程.
回复

使用道具 举报

发表于 2009-10-13 19:55:48 | 显示全部楼层
那个等待事件存在大量的泄露。被证明每次运行会泄露大约0.03k的数据。
回复

使用道具 举报

发表于 2009-10-14 21:59:04 | 显示全部楼层
效率上不知道

但用触发的timer事件——
内置timer的TriggerRegisterTimerEvent

外置timer的TriggerRegisterTimerExpireEvent
——比直接TimerStart的好处是可以为该触发添加其它事件等等

比如需要一个周期效果,但0秒时也要生效一次,就可以用timer的触发加上生成触发后后一个TriggerEvaluate(或TriggerExecute,不熟者搜索“动作写进条件”)

更比如做一个可以被驱散的buff,就需要一个实现效果的周期代码,加上被驱散时的触发事件,用触发就可以写进同一个触发并通过GetTriggerEventId之类的方法区分是周期事件还是驱散事件,省去了来回绑定数据的麻烦
回复

使用道具 举报

发表于 2009-10-16 12:27:34 | 显示全部楼层
引用第13楼eff于2009-10-13 19:55发表的  :
那个等待事件存在大量的泄露。被证明每次运行会泄露大约0.03k的数据。
wait也有泄漏么?
回复

使用道具 举报

发表于 2009-10-16 13:48:48 | 显示全部楼层
那个好像没有。
回复

使用道具 举报

发表于 2009-10-16 19:39:07 | 显示全部楼层
哦。
回复

使用道具 举报

发表于 2010-1-11 14:04:33 | 显示全部楼层
区别是有的 TRIGGER 不灵活   TIMER  灵活一点
就如性线动画上就能看得出  TIMER方便多了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-7-22 08:30 , Processed in 0.149101 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表