creator 2.2
在做一个mud游戏,需要把战斗情况以纯文字实时显示在Label中,例如:
每隔一秒钟显示一行字,谁对谁造成了多少点伤害
我首先想到的是用计时器,但还需要显示回合数,这就很郁闷了,想把计时器写在for循环里,但是结果不是想要的,for循环会直接执行全部循环次数,而不是等待计时器结束再执行下一次循环
在线等大大帮忙解答!!
creator 2.2
在做一个mud游戏,需要把战斗情况以纯文字实时显示在Label中,例如:
每隔一秒钟显示一行字,谁对谁造成了多少点伤害
我首先想到的是用计时器,但还需要显示回合数,这就很郁闷了,想把计时器写在for循环里,但是结果不是想要的,for循环会直接执行全部循环次数,而不是等待计时器结束再执行下一次循环
在线等大大帮忙解答!!
简单点,写在update中this.time += dt;随时控制变量归零重新计时,还可以搞个变量做开关随时暂停计时。if(paused){return}
但是这样计算双方的伤害又写在哪里呢?或者可不可以做到这样:计时器写在for循环里,for语句的每一次循环都要等待上一次for循环的计时器结束再执行呢?
有了计时器还要for干嘛,直接定一个每秒执行的计时器,把你要执行的内容放进去
伤害是伤害,时间处理是时间的,两者不应耦合,伤害处理用时间就取一下时间,比如封装个getTime(),不要写在一起。
你需要的是协程,如果不用协程,自己弄个状态机搞。
for (var i = 1; i < 11; i++) {
this.fightRichText.string += "<br/>第" + i + "回合"
this.schedule(function () {
this.fightRichText.string += "<br/>发起攻击"
}, this.interval, this.repeat, this.delay);
}
这样有没有更清楚一点呢,我是想达到这样的效果。
但运行结果是10个计时器同时触发了,本意是想10个计时器按顺序运行。
就类似于,我想要10个计时器串联,但这样写的结果是并联的,应该咋解决。。
this.delay = i * 60
每个回合的战斗时间是不确定的
那就更应该灵活处理,比如一个时间队列,this.timeQueue = [],每个新回合都推入一个计时
可以把for循环放在update里,改写成if (i< 11 && this.mark)类似这样。
但是更好的方法应该是用异步去做
我大概理解你可能是想用for这种语法来描述可控的异步过程,有两种思路解决:
对对,cc.Tween可以解决!感谢大佬!