java中timer的用法属性

查看: 931|回复: 17
关于timer暂停问题
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
为什么我同timer给英雄自动加属性,能启动,但是就是暂停不下来,不管是暂停之后,删除.还是等待一会了再暂停,他会一直运行下去。
附上代码文件。.
求大神解释下为什么.
启动自动加属性是-hh
暂停自动加属性是-hh-
或者那位大神能写个自动加属性的例子,并且能暂停的.&&用timer...谢谢了
(3.39 KB, 下载次数: 14)
19:05 上传
点击文件名下载附件
@ljzsmy @雷破天 @黑白之翼 正好问你1个问题 我想开启1个计时器每0.10秒对区域单位造成属性关联伤害,当英雄 ...
最好的是哈希表或者缓存记录 可以方便多人多英雄
如果只有一个 可以整数记录啊 运行一次加1
大于等于300就可以了
<p id="rate_813" onmouseover="showTip(this)" tip="膜拜大神&F币 + 2
" class="mtn mbn">
为什么要用timer了。变量记录下timer就可以了。
为什么要用timer了。变量记录下timer就可以了。
用的这个函数,应该没错吧timerstare(tm,0.20,true,function X)就是停不下来,对英雄加属性,但是对平米显示文字可以。
TimerStart或者TimerStartBJ&
本帖最后由 Sorasnow 于
15:53 编辑
function StartTimerBJ takes timer t, boolean periodic, real timeout returns timer
& & set bj_lastStartedTimer = t
& & call TimerStart(t, timeout, periodic, null)
& & return bj_lastStartedTimer
endfunction
复制代码自己看1下触发器中StartTimerBJ的使用方法再来说话
首先它让全局变量bj_lastStartedTimer等于传递来的参数t,并把bj_lastStartedTimer返回;当然,这不重要,我们关心的是
call TimerStartTimerStart(t, timeout, periodic, null)
我们看到,在调TimerStart时,在code那项参数中,需要执行的函数为null;那么,需要被执行的,比如上文的刷兵函数,到哪去了呢——很明显,跟使用TriggerRegisterTimerEventPeriodic时一样,它被放到动作函数里
简而言之,StartTimerBJ跟TriggerRegisterTimerEventPeriodic一样是把函数放触发器动作里,通过执行触发器来执行函数,二者的区别仅仅是触发器事件不同罢了,因此使用StartTimerBJ可谓换汤不换药,并不比使用TriggerRegisterTimerEventPeriodic高效。
& && &&&以前在跟人介绍StartTimerBJ时,我曾比喻StartTimerBJ是被阉割了的TimerStart;因为TimerStart中最重要的code参数为null,好比作为男人却没有小JJ一样!
现在大家对Timer的使用应该了解了吧,有了它,那我们完全可以屏弃使用TriggerRegisterTimerEvent的写法!
& & unit array xc_zjjsx
endglobals
function xc_sx takes nothing returns nothing
call ModifyHeroStat(0,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],0,10)
call ModifyHeroStat(1,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],0,10)
call ModifyHeroStat(2,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],0,10)
endfunction
function xc_j takes nothing returns nothing
local string b=GetEventPlayerChatString()
local string bc
local timer tm=CreateTimer()
local integer i=0
& & if xc_zjjsx[GetPlayerId(GetTriggerPlayer())]!=null then
&&if(SubStringBJ(b,1,1)==&-&)then
& &if(SubStringBJ(b,2,2)==&h&)then
& & if(SubStringBJ(b,3,3)==&l&)then
& &&&set bc =SubStringBJ(b,5,20)
& &&&if(SubStringBJ(b,4,4)==&-&)then
& && &call ModifyHeroStat(0,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],1,S2I(bc))
& &&&else
& && &call ModifyHeroStat(0,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],0,S2I(bc))
& &&&//call SetHeroStr(xc_zjjsx[GetPlayerId(GetTriggerPlayer())],GetHeroStr(xc_zjjsx[GetPlayerId(GetTriggerPlayer())],false)+S2I(bc),true)
& &&&endif
& & endif
& & if(SubStringBJ(b,3,3)==&m&)then
& &&&set bc =SubStringBJ(b,5,20)
& &&&if(SubStringBJ(b,4,4)==&-&)then
& && &call ModifyHeroStat(1,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],1,S2I(bc))
& &&&else
& && &call ModifyHeroStat(1,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],0,S2I(bc))
& &&&//call SetHeroStr(xc_zjjsx[GetPlayerId(GetTriggerPlayer())],GetHeroStr(xc_zjjsx[GetPlayerId(GetTriggerPlayer())],false)+S2I(bc),true)
& &&&endif
& & endif
& & if(SubStringBJ(b,3,3)==&z&)then
& &&&set bc =SubStringBJ(b,5,20)
& &&&if(SubStringBJ(b,4,4)==&-&)then
& && &call ModifyHeroStat(2,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],1,S2I(bc))
& &&&else
& && &call ModifyHeroStat(2,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],0,S2I(bc))
& &&&//call SetHeroStr(xc_zjjsx[GetPlayerId(GetTriggerPlayer())],GetHeroStr(xc_zjjsx[GetPlayerId(GetTriggerPlayer())],false)+S2I(bc),true)
& &&&endif
& & endif
& & if(SubStringBJ(b,3,3)==&h&)then
& &&&//call StartTimerBJ(tm,true,0.20)
& &&&call TimerStart(tm,0.20,true,function xc_sx)
& &&&call DisplayTimedTextToPlayer(GetTriggerPlayer(),0,0,3,&启动脚本&)
& &&&call PauseTimer(tm)
& &&&call DisplayTimedTextToPlayer(GetTriggerPlayer(),0,0,3,&暂停脚本&)
& & endif
& &endif
&&endif
& & else&&
& && &&&call DisplayTimedTextToPlayer(GetTriggerPlayer(),0,0,3,&请选择一个单位&)
set tm =null
endfunction
function xc_d takes nothing returns nothing
& & set xc_zjjsx[GetPlayerId(GetTriggerPlayer())]=GetTriggerUnit()
endfunction&&
function xc_jpjsx takes nothing returns nothing
& & local trigger t=CreateTrigger()
& & local trigger t1=CreateTrigger()
& & local integer i=0
& && &&&exitwhen i&=11
& && &&&set xc_zjjsx[i]=null
& && &&&call TriggerRegisterPlayerChatEvent(t,Player(i),GetEventPlayerChatString(),true)
& && &&&call TriggerRegisterPlayerUnitEvent(t1,Player(i),ConvertPlayerUnitEvent(24),null)
& && &&&set i=i+1
& & endloop
& & call TriggerAddCondition(t,Condition(function xc_j))
& & call TriggerAddCondition(t1,Condition(function xc_d))
& & set t=null
& & set t1=null
endfunction
//===========================================================================
function InitTrig_1 takes nothing returns nothing
& & set gg_trg_1 = CreateTrigger()
& & call TriggerAddAction(gg_trg_1, function xc_jpjsx)
endfunction
复制代码你再拿去试试 我这里没有合适的地图导入
你再拿去试试 我这里没有合适的地图导入
这个这样写上去,是因为我想是不是先要开启脚本,然后运行,再最后暂停脚本....所以有了那个BJ函数...这是尝试很多办法之后,我这样想的....
&&再说你给我的代码,这个代码我试过,可以运行,但是我不需要一启动就暂停.我假设在需要运行0.80秒,那么我在中间加个call PolledWait(0.80)这个函数,他运行了,然后停不下来了.一直给我运行下去..
本帖最后由 Sorasnow 于
16:20 编辑
call TimerStart(tm,0.20,true,function xc_sx)
每0.20秒循环执行xc_sx的函数 我说你真的有认真看麽?
看不懂的话你还是洗洗睡吧
这个这样写上去,是因为我想是不是先要开启脚本,然后运行,再最后暂停脚本....所以有了那个BJ函数...这 ...
能说说大概效果么!听的不是狠明白
本帖最后由 Sorasnow 于
16:21 编辑
能说说大概效果么!听的不是狠明白开启1个计时器 每0.20秒增加英雄的三围属性值
通过聊天信息输入命令开启和暂停脚本的运行
l对应力量 m对应敏捷 z对应智力
能说说大概效果么!听的不是狠明白
很简单,我需要一个英雄自动加属性,不需要瞬间加成的.....我需要有加属性的这个效果..而timer可以实现这个效果....那么问题来了,属性是可以加,但是就是不能暂停这个timer,属性会一直加下去...-hh开启这个加属性,-hh-关闭这个加属性.
call TimerStart(tm,0.20,true,function xc_sx)通过这个函数调用下面这个方法.
function xc_sx takes nothing returns nothing
call ModifyHeroStat(0,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],0,10)
call ModifyHeroStat(1,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],0,10)
call ModifyHeroStat(2,xc_zjjsx[GetPlayerId(GetTriggerPlayer())],0,10)
endfunction
实现是可以实现,但是暂停不了,他会一直运行下去..
call TimerStart(tm,0.20,true,function xc_sx)
每0.20秒循环执行xc_sx的函数 我说你真的有认真看麽?
.好吧,你就当我没看懂,那请问你一下,我怎么能让这个函数暂停.运行一段时间后.能否告诉下?
全局一个计时器变量 或者变量组
用TimerStart实现
两个触发或者一个触发实现开启和暂停
本帖最后由 Sorasnow 于
17:36 编辑
正好问你1个问题 我想开启1个计时器每0.10秒对区域单位造成属性关联伤害,当英雄死亡时或计时器运行时间达到30秒后强制暂停并销毁该计时器,我应该怎麽写代码? 看了不少教程都说在标准Jass和vJass中使用等待是错误的行为
需要使用2个计时器来分别记录时间流逝还是用循环整数 每运行1次Int+1,当Int≥30时call DestroyTimer(tm)?
求大神详细写1下代码 我知道在局部变量计时器中不能使用PolledWait和TriggerSleepAction 那麽应该怎麽做?
function xc_jpjsx takes nothing returns nothing
& & local trigger t=CreateTrigger()
& & local trigger t1=CreateTrigger()
& & local integer i=0
& && &&&exitwhen i&=11
& && &&&set xc_zjjsx[i]=null
& && &&&call TriggerRegisterPlayerChatEvent(t,Player(i),GetEventPlayerChatString(),true)
& && &&&call TriggerRegisterPlayerUnitEvent(t1,Player(i),ConvertPlayerUnitEvent(24),null)
& && &&&set i=i+1
& & endloop
& & //call TriggerAddCondition(t,Condition(function xc_j))
& & //限制条件里等待无效
& & call TriggerAddAction(t,function xc_j)
& & call TriggerAddCondition(t1,Condition(function xc_d))
& & set t=null
& & set t1=null
endfunction
Powered by博客访问: 682824
博文数量: 242
博客积分: 5592
博客等级: 大校
技术积分: 1967
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Java
本文向您介绍Spring定时器的两种实现方式,包括Java Timer定时和Quartz定时器,两种Spring定时器的实现方式各有优点,可结合具体项目考虑是否采用。
有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz。1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import&java.util.TimerT& &public&class&EmailReportTask&extends&TimerTask{& &&&&&@Override& &&&&&public&void&run()&{& &&&&&&&&&...& &&&&&}&&& &}& &在Spring定义 ... 配置Spring定时器 &id="scheduleReportTask"&class="org.springframework.scheduling.timer.ScheduledTimerTask"& &&name="timerTask"&ref="reportTimerTask"&& &&name="period"& && && && &timerTask属性告诉ScheduledTimerTask运行哪个。代表24个小时 启动Spring定时器 Spring的TimerFactoryBean负责启动定时任务 &class="org.springframework.scheduling.timer.TimerFactoryBean"& &&name="scheduledTimerTasks"& &&&&&bean="scheduleReportTask"& && && &scheduledTimerTasks里显示一个需要启动的定时器任务的列表。& &可以通过设置delay属性延迟启动& &&id="scheduleReportTask"&class="org.springframework.scheduling.timer.ScheduledTimerTask"& &&name="timerTask"&ref="reportTimerTask"&& &&name="period"& && && &&name="delay"& &3600000& && && &这个任务我们只能规定每隔24小时运行一次,无法精确到某时启动 2.Quartz定时器 首先继承QuartzJobBean类实现executeInternal方法 import&org.quartz.JobExecutionC& &import&org.quartz.JobExecutionE& &import&org.springframework.scheduling.quartz.QuartzJobB& &&public&class&EmailReportJob&extends&QuartzJobBean{& &protected&void&executeInternal(JobExecutionContext&arg0)& &throws&JobExecutionException&{& &...& &}& &}& &在Spring中定义&id="reportJob"&class="org.springframework.scheduling.quartz.JobDetailBean"& &&name="jobClass"& &EmailReportJob& && &&name="jobDataAsMap"& &&&&&& &&&&&&&&&&key="courseService"& &&&&&&&&&&&&&&bean="courseService"& &&&&&&&&&&&&&& &&&&&& && && &在这里我们并没有直接声明一个EmailReportJob
Bean,而是声明了一个JobDetailBean。这个是Quartz的特点。JobDetailBean是Quartz的
org.quartz.JobDetail的子类,它要求通过jobClass属性来设置一个Job对象。 使用Quartz的JobDetail中的另一个特别之处是EmailReportJob的courseService属性是间接设置的。
JobDetail的jobDataAsMap属性接受一个Map,包括设置给jobClass的各种属性,当。JobDetailBean实例化时,它
会将courseService Bean注入到EmailReportJob 的courseService 属性中。 启动定时器 Quartz的org.quartz.Trigger类描述了何时及以怎样的频度运行一个Quartz工作。Spring提供了两个触发器SimpleTriggerBean和CronTriggerBean。 SimpleTriggerBean与scheduledTimerTasks类似。指定工作的执行频度,模仿scheduledTimerTasks配置 .&id="simpleReportTrigger"&class="org.springframework.scheduling.quartz.SimpleTriggerBean"& &&name="jobDetail"&ref="reprotJob"&& &&name="startDelay"& &360000& && &&name="repeatInterval"& &&&&&& && && &startDelay也是延迟1个小时启动 CronTriggerBean指定工作的准确运行时间 &id="cronReportTrigger"&class="org.springframework.scheduling.quartz.CronTriggerBean"& &&name="jobDetail"&ref="reprotJob"&& &&name="cronExpression"& &0&0&6&*&*&?& && && &属性cronExpression告诉何时触发。最神秘就是cron表达式:Linux系统的计划任务通常有cron来承担。一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。从左到右:1.秒2.分3.小时4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份() 每个元素都显示的规定一个值(如6),一个区间(9-12),一个列表(9,11,13)或一个通配符(*)。因为4和6这两个元素是互斥的,因此应该通过设置一个问号(?)来表明不想设置的那个字段,“/”如果值组合就表示重复次数(10/6表示每10秒重复6次)。 启动定时器 &class="org.springframework.scheduling.quartz.SchedulerFactoryBean"& &&&&&&name="triggers"& &&&&&&&&&bean="cronReportTrigger"& &&&&&& && &triggers属性接受一组触发器
阅读(2958) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。感谢本文作者
昵称:卡卡
加入时间: 0:00:00
这家伙很懒,虾米都没写
以下内容也很赞哦您所在的位置: &
Timer控件属性和事件
Timer控件属性和事件
清华大学出版社
《ASP.NET动态网站开发实用教程》第10章ASP.NET AJAX术,本章内容有ASP.NET AJAX简介、在项目中使用ASP.NET AJAX、ASP.NET AJAX Control Extenders扩展控件。通过本章的学习,读者应了解ASP.NET AJAX的基本知识;熟练掌握ASP.NET AJAX主要控件的用法;了解ASP.NET AJAX控件工具包中部分控件的使用。本小节为大家介绍Timer控件属性和事件。
10.4& Timer控件使用
工具箱的AJAX Extensions类别里的Timer控件对于重复执行服务器端代码非常有用。例如,可以使用它每5秒钟更新一次UpdatePanel的内容。UpdatePanel的内容的来源各不相同,例如显示添加到站点的新内容的数据库,显示当前联机用户数量的成员服务,甚至是外部Web服务。
10.4.1& Timer控件属性和事件
除了大多数控件具有的标准属性(如ID和EnableViewState)之外,Timer控件其他主要属性如表10-4所示。
表10-4& Timer控件主要属性
Timer控件主要事件是一个Tick事件:指定间隔到期后触发该事件。
Timer控件用法非常简单。控件按照指定的时间间隔激活其Tick事件。在这个事件的事件处理程序内,可以执行认为合适的任何代码。如果使用Triggers集合将Timer与Update Panel关联起来,当Timer控件运行--也就是它激活Tick事件时,就可以更新页面的单个区域。
使用Timer控件可以创建连续更新而不需要完全回送的页面。可以使用相同的原则来显示想要的任何类型的动态数据。
【责任编辑: TEL:(010)】&&&&&&
关于&&&&的更多文章
ASP.NET是常用的网站开发技术之一,本专题将给大家提供一些ASP.N
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
AngularJS是一款来自Google的前端JS框架,它的核心特
《学会VBA,菜鸟也高飞!》的目的是让读者能够在相对
本书揭示了Oracle 数据库内部的核心信息,这些信息恰
本书结合大量的典型实例,详细介绍了用Java来编写网络应用程序的技术。本书的范例都基于最新的JDK 1.5版本,书中内容包括:Java
51CTO旗下网站

我要回帖

更多关于 vb中timer的用法 的文章

 

随机推荐