请问一个action控制的问题 有代码!

var func=function(){
this.csdNode.stopAllActions();
this.csdNode.runAction(cc.speed(cc.sequence(cc.callFunc(function(){
//DO SOMETHING…
console.log(“local time:”+JSON.stringify(new Date().getTime()));
}.bind(this)),cc.callFunc(function(){
func();
})),1));
}.bind(this)
func();

如上代码如这里的 local time:每次输出都会延迟60分之1秒,怎么保证没有延迟呢?

var func=function(){
this.csdNode.stopAllActions();
this.csdNode.runAction(cc.speed(cc.sequence(cc.callFunc(function(){
//DO SOMETHING…
console.log(“local time:”+JSON.stringify(new Date().getTime()));
}.bind(this)),cc.callFunc(function(){
//func();
})).repeatForever(),1));
}.bind(this)
func();
以上代码跟这里都是延迟一帧执行

var func=function(){
this.csdNode.stopAllActions();
this.csdNode.runAction(cc.speed(cc.sequence(cc.spawn(cc.callFunc(function(){
//DO SOMETHING…
console.log(“local time:”+JSON.stringify(new Date().getTime()));
}.bind(this)),cc.callFunc(function(){
//func();
}))).repeatForever(),1));
}.bind(this)
func();
这样写好像就每三次是一样的

有大神能讲讲原理吗?

action没法保证精确的延迟,它只能保证action执行时,延迟的时间 >= 设定的值。action的回调也是在一帧里进行的,如果某一帧太忙,比如渲染的图片特别多,或者别的计算特别复杂,那么action的回调也就会被影响了。

是不是改用update就很准确了

。。。用Date.now()更准 不过计算机tick的时间都是离散的 用update配合Date.now() 获取的时间间隔至少也有168毫秒 真要踩某个已经成为过去的时间点执行有点吹毛求疵了。