大家好!请教一个奇怪的问题:我在编写一个在start生命周期回调函数中,读取json文件(里面是x y坐标构成的数组,共3对坐标),然后for循环动态生成敌人节点,并给敌人节点添加tween动作的示例代码。奇怪的是,tween动作的初始化如果放在for循环前面,那么只有最后一个节点才会正确运动。
-
Creator 版本: 2.4.12
-
目标平台: firefox, chrome
-
首个报错: 浏览器控制台无报错
-
重现方式:在start生命周期回调函数中,有如下一段代码
let enemy_list = this.enemies.json;
let patrol = cc.tween().by(0.2, {y: -100}).by(0.4, {y: 200}).by(0.2, {y: -100});
for( let i = 0; i < enemy_list.length; i++) {
//dynamiclly generate enemies
let enemy_node = cc.instantiate(this.enemyPrefab);
enemy_node.parent = cc.find(“Canvas/bg”);
enemy_node.setPosition(enemy_list[i].x, enemy_list[i].y);
cc.tween(enemy_node).then(patrol).repeatForever().start();
}
我以为初始化的tween动作 patrol 是公用的,所以放在for循环外部,但这样运行的效果只有最后一个节点运动是正确的,前两个节点只是微微抖动,参见上传的gif动图。
如果把初始化 patrol 的语句插到for循环中倒数第二句的位置,则三个节点都运行正常。
但我不理解初始化放在for循环外部为什么运动会出错,不知道是我对tween接口的使用理解有误,还是对js理解有误?