(多个精灵死亡之前, 将所有精灵坐标moveTo到英雄上, 然后销毁精灵) -> 所有moveTo动作执行完成之后, 在英雄上播放升级动画等等,以及其他逻辑.
请问: 该如何写? 一个精灵好办, 用cc.sequence即可. 但是一群精灵如何解决?
本质就是channel问题
(多个精灵死亡之前, 将所有精灵坐标moveTo到英雄上, 然后销毁精灵) -> 所有moveTo动作执行完成之后, 在英雄上播放升级动画等等,以及其他逻辑.
请问: 该如何写? 一个精灵好办, 用cc.sequence即可. 但是一群精灵如何解决?
本质就是channel问题
做一个自定义计数事件A,里面计数比如num=5(对应你几个精灵),当一个精灵完成动作,通知事件A减1,计数事件变成4,以此类推。计数事件A里num小于0时,通知升级动画事件B。cc.sequence最后面加个callback通知事件A。
请问计数事件什么? 是一个script + update的脚本吗? 逻辑放到update中?
还是:
showdialog:function(){
var a=false
while(var a ){
}
}
或者ES新特性( 兼容性?)
promise await?
这个问题是我们公司面试的时候会问到的一个问题, 提示一下:
/**
!#en Create an action with the specified action and forced target.
!#zh 用已有动作和一个新的目标节点创建动作。
@param target target
@param action action
*/
export function targetedAction(target: Node, action: FiniteTimeAction): ActionInterval;
精灵死了要给英雄加经验吧,经验到了能升级时,就播放升级动画。
试试promise
兼容性如何? 我曾经用过ES6一些特性, 苹果6手机不支持
应该是手机系统没升级,引入promise第三方库就好了
放update里就行,我只是提供了一个思路,灵活变化啊。
能用特性就用特性。
// 假设精灵节点数组是nodes
var remain = nodes.length; // 还剩多少精灵没有执行完动画
for (var i = 0; i < nodes.length; i++) {
nodes[i].runAction(cc.sequence(
cc.moveTo(...),
cc.callFunc(() => {
if (--remain == 0) {
// 所有精灵都执行完动画了
}
})
));
}
使用async await promise 每个动画都是一个promise 动画的回调resolve 再调用awit promise.all([动画数组])
至于有些ES6 语法不支持你把文件改成ts后缀