[]关于Timer延迟调用有一些不解

private function skill():void
{
   Laya.timer.once(1500,this,finish); 
   //Laya.timer.once(3000,this,finish); 
}
private function skill():void
{
   this.visible=false;
}
假定这是一个简陋的人物隐身技能,蓄力1.5s后人物消失。
 
测试的时候我发现如果我把注释去掉,这个后面的延迟时间是会覆盖前面的,也就是说运行下来是:3s后只会出发一次finish函数
 
为什么我要这样去测,假定有游戏类Game()里的init函数里
hero1 = new Hero1;
hero2 = new Hero2;
分别对其调用他们的skill();(一个1.5s后触发,一个3s后触发)
语法上几乎是和开始的连续调用相同,但是结果是:触发了两次,且是正确的时间触发,一个1.5s,一个3s
 
其实后者是我想要的结果,但我不明白其中的玄机,同样是Laya.timer.连续once相同的调用函数名,结果却不一样,为了能够用的更安心,不出隐形BUG,希望专业人员给我讲解一下,感谢
 
已邀请:

Laya_XS

赞同来自:

timer的once在定时后执行相同的方法时默认后面的执行会把上一次等待执行的方法覆盖掉,你可以通过修改timer once的第四个参数还关闭覆盖:Laya.timer.once(1000,this,方法,null,false);

要回复问题请先

商务合作
商务合作