嵌套暂时没法做,先做些常用的单独使用的动作组件
ActionJump.js (拖到需要做该动作的节点上,不同类型的动作互不影响)
var ActionDurationJump = cc.Class({
name: "ActionDurationJump",
properties: {
delayTime: {
default: 0,
displayName: "延时",
min: 0
},
duration: {
default: 1,
displayName: "时长",
min: 0
},
position: {
default: cc.v2(0, 0),
displayName: "结束坐标"
},
height: {
default: 50,
displayName: "高度",
},
jumps: {
default: 1,
displayName: "跳次",
min: 0
},
callback: {
default: null,
type: cc.Component.EventHandler,
displayName: "完成回调",
}
}
});
cc.Class({
extends: cc.Component,
properties: {
auto: {
default: false,
displayName: "自动执行",
tooltip: "如果false,则需要回调执行该脚本组件的begin方法"
},
delayTime: {
default: 0,
displayName: "自动延迟执行时长",
tooltip: "只有在自动执行模式下,这个延迟才会有效",
min: 0
},
target: {
default: null,
type: cc.Node,
displayName: "执行的节点",
tooltip: "如果没有设置就默认 挂载该脚本的节点"
},
startFromCurrent: {
default: false,
displayName: "从当前状态执行",
tooltip: "勾上:从当前状态开始执行动作 不勾:从编辑的初始状态开始执行"
},
times: {
default: 1,
type: cc.Integer,
displayName: "执行次数",
tooltip: "一套动作数组 执行的次数",
min: 1
},
jumpToOrBy: {
default: true,
displayName: "跳到or跳了",
tooltip: "勾上:跳动到(绝对值);不勾: 跳动了(相对值)"
},
actionJumps: {
default: [],
type: ActionDurationJump,
displayName: "动作数组",
tooltip: "暂时只支持到5个,超过了,自己进来扩写代码"
},
allOverCallback: {
default: true,
displayName: "全部完成/每完成一次回调",
tooltip: "勾上:全部完成才回调 不勾:每完成一次都回调,执行几次就调几遍回调"
},
overCallbacks: {
default: [],
type: cc.Component.EventHandler,
displayName: "完成回调数组",
tooltip: "全部完成时回调的事件数组"
}
},
// LIFE-CYCLE CALLBACKS:
// onLoad () {},
start () {
this.actionNode = this.target;
if (this.actionNode == undefined || this.actionNode == null) {
this.actionNode = this.node;
}
this.actionNode.srcPosition = this.actionNode.position;
if (this.auto) {
this.scheduleOnce(function() {
this.begin();
}, this.delayTime);
}
},
begin () {
this.reset();
this.currentTime = this.times;
this.action();
},
reset () {
this.currentTime = 0;
this.actionNode.stopActionByTag(10812);
if (this.startFromCurrent) {
} else {
this.actionNode.position = this.actionNode.srcPosition;
}
},
// update (dt) {},
action () {
if (this.currentTime > 0) {
this.currentTime--;
} else {
return;
}
if (this.jumpToOrBy) {
if (this.actionJumps.length == 1) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpTo(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 2) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpTo(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpTo(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 3) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpTo(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpTo(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.delayTime(this.actionJumps[2].delayTime), cc.jumpTo(this.actionJumps[2].duration, this.actionJumps[2].position, this.actionJumps[2].height, this.actionJumps[2].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[2].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 4) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpTo(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpTo(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.delayTime(this.actionJumps[2].delayTime), cc.jumpTo(this.actionJumps[2].duration, this.actionJumps[2].position, this.actionJumps[2].height, this.actionJumps[2].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[2].callback); }.bind(this)),
cc.delayTime(this.actionJumps[3].delayTime), cc.jumpTo(this.actionJumps[3].duration, this.actionJumps[3].position, this.actionJumps[3].height, this.actionJumps[3].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[3].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 5) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpTo(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpTo(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.delayTime(this.actionJumps[2].delayTime), cc.jumpTo(this.actionJumps[2].duration, this.actionJumps[2].position, this.actionJumps[2].height, this.actionJumps[2].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[2].callback); }.bind(this)),
cc.delayTime(this.actionJumps[3].delayTime), cc.jumpTo(this.actionJumps[3].duration, this.actionJumps[3].position, this.actionJumps[3].height, this.actionJumps[3].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[3].callback); }.bind(this)),
cc.delayTime(this.actionJumps[4].delayTime), cc.jumpTo(this.actionJumps[4].duration, this.actionJumps[4].position, this.actionJumps[4].height, this.actionJumps[4].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[4].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 6) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpTo(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpTo(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.delayTime(this.actionJumps[2].delayTime), cc.jumpTo(this.actionJumps[2].duration, this.actionJumps[2].position, this.actionJumps[2].height, this.actionJumps[2].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[2].callback); }.bind(this)),
cc.delayTime(this.actionJumps[3].delayTime), cc.jumpTo(this.actionJumps[3].duration, this.actionJumps[3].position, this.actionJumps[3].height, this.actionJumps[3].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[3].callback); }.bind(this)),
cc.delayTime(this.actionJumps[4].delayTime), cc.jumpTo(this.actionJumps[4].duration, this.actionJumps[4].position, this.actionJumps[4].height, this.actionJumps[4].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[4].callback); }.bind(this)),
cc.delayTime(this.actionJumps[5].delayTime), cc.jumpTo(this.actionJumps[5].duration, this.actionJumps[5].position, this.actionJumps[5].height, this.actionJumps[5].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[5].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
}
} else {
if (this.actionJumps.length == 1) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpBy(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 2) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpBy(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpBy(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 3) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpBy(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpBy(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.delayTime(this.actionJumps[2].delayTime), cc.jumpBy(this.actionJumps[2].duration, this.actionJumps[2].position, this.actionJumps[2].height, this.actionJumps[2].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[2].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 4) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpBy(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpBy(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.delayTime(this.actionJumps[2].delayTime), cc.jumpBy(this.actionJumps[2].duration, this.actionJumps[2].position, this.actionJumps[2].height, this.actionJumps[2].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[2].callback); }.bind(this)),
cc.delayTime(this.actionJumps[3].delayTime), cc.jumpBy(this.actionJumps[3].duration, this.actionJumps[3].position, this.actionJumps[3].height, this.actionJumps[3].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[3].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 5) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpBy(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpBy(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.delayTime(this.actionJumps[2].delayTime), cc.jumpBy(this.actionJumps[2].duration, this.actionJumps[2].position, this.actionJumps[2].height, this.actionJumps[2].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[2].callback); }.bind(this)),
cc.delayTime(this.actionJumps[3].delayTime), cc.jumpBy(this.actionJumps[3].duration, this.actionJumps[3].position, this.actionJumps[3].height, this.actionJumps[3].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[3].callback); }.bind(this)),
cc.delayTime(this.actionJumps[4].delayTime), cc.jumpBy(this.actionJumps[4].duration, this.actionJumps[4].position, this.actionJumps[4].height, this.actionJumps[4].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[4].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
} else if (this.actionJumps.length == 6) {
this.actionNode.runAction(this.actionID = cc.sequence(
cc.delayTime(this.actionJumps[0].delayTime), cc.jumpBy(this.actionJumps[0].duration, this.actionJumps[0].position, this.actionJumps[0].height, this.actionJumps[0].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[0].callback); }.bind(this)),
cc.delayTime(this.actionJumps[1].delayTime), cc.jumpBy(this.actionJumps[1].duration, this.actionJumps[1].position, this.actionJumps[1].height, this.actionJumps[1].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[1].callback); }.bind(this)),
cc.delayTime(this.actionJumps[2].delayTime), cc.jumpBy(this.actionJumps[2].duration, this.actionJumps[2].position, this.actionJumps[2].height, this.actionJumps[2].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[2].callback); }.bind(this)),
cc.delayTime(this.actionJumps[3].delayTime), cc.jumpBy(this.actionJumps[3].duration, this.actionJumps[3].position, this.actionJumps[3].height, this.actionJumps[3].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[3].callback); }.bind(this)),
cc.delayTime(this.actionJumps[4].delayTime), cc.jumpBy(this.actionJumps[4].duration, this.actionJumps[4].position, this.actionJumps[4].height, this.actionJumps[4].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[4].callback); }.bind(this)),
cc.delayTime(this.actionJumps[5].delayTime), cc.jumpBy(this.actionJumps[5].duration, this.actionJumps[5].position, this.actionJumps[5].height, this.actionJumps[5].jumps), cc.callFunc(function() { this.callEventHandler(this.actionJumps[5].callback); }.bind(this)),
cc.callFunc(function() { this.action(); this.overCallback(); }.bind(this))));
}
}
this.actionID.setTag(10812);
},
overCallback() {
if (this.currentTime > 1) {
if (this.allOverCallback) {
for (let i = 0; i < this.overCallbacks.length; i++) {
if (this.overCallbacks[i] != null && this.overCallbacks[i].target != null) {
this.overCallbacks[i].emit([this]);
}
}
}
} else {
for (let i = 0; i < this.overCallbacks.length; i++) {
if (this.overCallbacks[i] != null && this.overCallbacks[i].target != null) {
this.overCallbacks[i].emit([this]);
}
}
}
},
callEventHandler(eventHandler) {
if (eventHandler && eventHandler.target) {
eventHandler.emit([this]);
}
}
});