我正在使用Phaser 2.0,并尝试将一系列命令排序在一起。每个命令都将启动补间,这意味着要花费一些时间,因此我决定使用async.forEachSeries顺序运行命令。
这是我的async.forEachSeries函数:
async.forEachSeries(parsed.moves,function(move, callback) {
that.moveObj(move, callback)
}, function() {
console.log('done running the entire code')
});
移动对象正在启动补间并调用补间的回调onComplete。
moveObject(x, y, obj,callbackToAsync, offsetX = 0, offsetY = 0) {
let coordinates = this.convert(obj.i + offsetX,obj.j + offsetY)
let tween = this.game.add.tween(obj, this.game, this.game.tweens).to({
x: coordinates.x,
y: coordinates.y
}, 2000)
tween.onComplete.add(callbackToAsync,this)
tween.start()
}
因此,据我所知,应该调用每个动作,并且在补间完成之后,应该调用回调并继续进行下一个迭代,并执行数组中的下一个动作。
最终发生的事情是执行了第一步,然后执行了所有迭代而没有完成所有迭代的功能。我确保moves数组具有的对象多。
所以这与补间有关,因为当我简单地在moveOb中调用回调时,它将顺序地处理移动。