|
@@ -14,17 +14,33 @@ cc.Class({
|
|
|
this.initNodes();
|
|
|
},
|
|
|
|
|
|
- start () {
|
|
|
- this.rivalPeelLtoL();
|
|
|
- },
|
|
|
+ // start () {
|
|
|
+
|
|
|
+ // this.rivalPeelLtoR_01();
|
|
|
+ // this.ballAction();
|
|
|
+ // },
|
|
|
+
|
|
|
+ // update() {
|
|
|
+ // var beginPos = cc.v2(-95, 264);
|
|
|
+ // var centerPos = cc.v2(30, 5);
|
|
|
+ // var endPos = cc.v2(163, -140);
|
|
|
+
|
|
|
+ // this.g.lineWidth = 4;
|
|
|
+ // this.g.moveTo(beginPos.x, beginPos.y);
|
|
|
+ // this.g.bezierCurveTo(beginPos.x, beginPos.y, -270, 440, centerPos.x, centerPos.y);
|
|
|
+ // this.g.bezierCurveTo(centerPos.x, centerPos.y, 110, 20, endPos.x, endPos.y);
|
|
|
+ // this.g.stroke();
|
|
|
+ // },
|
|
|
|
|
|
// 初始化
|
|
|
initValues:function () {
|
|
|
// 配置绘制的数据
|
|
|
// 从配置中心获取数据
|
|
|
- this.config = require ("gameconfig")
|
|
|
+ this.gameconfig = require ("gameconfig")
|
|
|
// 配置绘制组件
|
|
|
this.g = this.getComponent(cc.Graphics);
|
|
|
+ // 球的状态
|
|
|
+ this.ballconfig = require("ballconfig");
|
|
|
|
|
|
// 记录下节点
|
|
|
this.poses = new Array();
|
|
@@ -42,11 +58,34 @@ cc.Class({
|
|
|
// 外部调用
|
|
|
// 球的运动停止
|
|
|
ballStop:function() {
|
|
|
+ // 首先停止所有动作
|
|
|
+ this.head.stopAllActions();
|
|
|
+ // 清空节点数组
|
|
|
+ this.poses = [];
|
|
|
+ this.g.clear();
|
|
|
+ },
|
|
|
+
|
|
|
+ // 全部停止
|
|
|
+ ballEnd:function() {
|
|
|
+ this.unschedule(this.ballUpdate);
|
|
|
+ // 首先停止所有动作
|
|
|
+ this.head.stopAllActions();
|
|
|
+ // 清空节点数组
|
|
|
+ this.poses = [];
|
|
|
+ this.g.clear();
|
|
|
+ },
|
|
|
|
|
|
+ // 球开始运动,开始刷新帧
|
|
|
+ ballAction:function() {
|
|
|
+ this.schedule(this.ballUpdate, 1 / 60);
|
|
|
},
|
|
|
|
|
|
// 我方接球,从左到左
|
|
|
- minePatLToL:function() {
|
|
|
+ minePatLToL_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
var beginPos = cc.v2(-103, -110);
|
|
|
var dropPos = cc.v2(-64, 144);
|
|
|
var endPos = cc.v2(-53, 313);
|
|
@@ -62,13 +101,23 @@ cc.Class({
|
|
|
var move_01_end = cc.callFunc(function() {
|
|
|
self.bump(dropPos);
|
|
|
});
|
|
|
- var move_02 = cc.bezierTo(0.5, bezier_02);
|
|
|
-
|
|
|
- this.head.runAction(cc.sequence(move_01, move_01_end, move_02));
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_RIVAL_LEFT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_RIVAL);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(50, 40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
},
|
|
|
|
|
|
// 我方接球,从右到右
|
|
|
- minePatRToR:function() {
|
|
|
+ minePatRToR_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
var beginPos = cc.v2(52, -109);
|
|
|
var dropPos = cc.v2(71, 141);
|
|
|
var endPos = cc.v2(131, 309);
|
|
@@ -84,13 +133,23 @@ cc.Class({
|
|
|
var move_01_end = cc.callFunc(function() {
|
|
|
self.bump(dropPos);
|
|
|
});
|
|
|
- var move_02 = cc.bezierTo(0.5, bezier_02);
|
|
|
-
|
|
|
- this.head.runAction(cc.sequence(move_01, move_01_end, move_02));
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_RIVAL_RIGHT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_RIVAL);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(50, 40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
},
|
|
|
|
|
|
// 我方接球,从左到右
|
|
|
- minePatLToR:function() {
|
|
|
+ minePatLToR_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
var beginPos = cc.v2(-103, -76);
|
|
|
var dropPos = cc.v2(47, 140);
|
|
|
var endPos = cc.v2(221, 346);
|
|
@@ -106,13 +165,55 @@ cc.Class({
|
|
|
var move_01_end = cc.callFunc(function() {
|
|
|
self.bump(dropPos);
|
|
|
});
|
|
|
- var move_02 = cc.bezierTo(0.5, bezier_02);
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_RIVAL_RIGHT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_RIVAL);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(50, 40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
+ },
|
|
|
+
|
|
|
+ // 我方削球,从右到左
|
|
|
+ minePeelRToL_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
|
|
|
- this.head.runAction(cc.sequence(move_01, move_01_end, move_02));
|
|
|
+ var beginPos = cc.v2(128, -117);
|
|
|
+ var dropPos = cc.v2(-66, 143);
|
|
|
+ var endPos = cc.v2(-134, 308);
|
|
|
+
|
|
|
+ // 将节点移动到指定位置
|
|
|
+ this.head.setPosition(beginPos);
|
|
|
+
|
|
|
+ var bezier_01 = [beginPos, cc.v2(31, 15), dropPos];
|
|
|
+ var bezier_02 = [dropPos, cc.v2(-75, 300), endPos];
|
|
|
+
|
|
|
+ var move_01 = cc.bezierTo(0.5, bezier_01);
|
|
|
+ var self = this;
|
|
|
+ var move_01_end = cc.callFunc(function() {
|
|
|
+ self.bump(dropPos);
|
|
|
+ });
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_RIVAL_LEFT_PEEL);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_RIVAL);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(-50, 40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
},
|
|
|
|
|
|
// 我方削球,从右到右
|
|
|
- minePeelRToR:function() {
|
|
|
+ minePeelRToR_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
var beginPos = cc.v2(148, -176);
|
|
|
var dropPos = cc.v2(79, 99);
|
|
|
var endPos = cc.v2(104, 319);
|
|
@@ -128,13 +229,23 @@ cc.Class({
|
|
|
var move_01_end = cc.callFunc(function() {
|
|
|
self.bump(dropPos);
|
|
|
});
|
|
|
- var move_02 = cc.bezierTo(0.5, bezier_02);
|
|
|
-
|
|
|
- this.head.runAction(cc.sequence(move_01, move_01_end, move_02));
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_RIVAL_RIGHT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_RIVAL);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(50, 40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
},
|
|
|
|
|
|
// 对手发球
|
|
|
rivalServer:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
var serverBegin = cc.v2(166, 290);
|
|
|
var beatPos = cc.v2(96, 274);
|
|
|
var dropPos = cc.v2(28, 144);
|
|
@@ -144,24 +255,36 @@ cc.Class({
|
|
|
// 将节点移动到指定位置
|
|
|
this.head.setPosition(serverBegin);
|
|
|
|
|
|
+ // 4条贝塞尔曲线
|
|
|
var bezier_01 = [serverBegin, cc.v2(125, 400), beatPos];
|
|
|
var bezier_02 = [beatPos, cc.v2(45, 250), dropPos];
|
|
|
var bezier_03 = [dropPos, cc.v2(0, 56), jumpPos];
|
|
|
var bezier_04 = [jumpPos, cc.v2(-80, 10), endPos];
|
|
|
|
|
|
- var move_01 = cc.bezierTo(0.5, bezier_01);
|
|
|
- var move_02 = cc.bezierTo(0.5, bezier_02);
|
|
|
- var move_03 = cc.bezierTo(0.5, bezier_03);
|
|
|
+ // 四条路线
|
|
|
+ var move_01 = cc.bezierTo(1.2, bezier_01);
|
|
|
+ var move_02 = cc.bezierTo(0.1, bezier_02);
|
|
|
+ var move_03 = cc.bezierTo(0.1, bezier_03);
|
|
|
var self = this;
|
|
|
var move_03_end = cc.callFunc(function() {
|
|
|
self.bump(jumpPos);
|
|
|
});
|
|
|
- var move_04 = cc.bezierTo(0.5, bezier_04);
|
|
|
- this.head.runAction(cc.sequence(move_01, move_02, move_03, move_03_end, move_04));
|
|
|
+ var move_04 = cc.bezierTo(0.3, bezier_04);
|
|
|
+ // 在第四条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.15);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_MINE_LEFT_PAT);
|
|
|
+ var spawn = cc.spawn(move_04, cc.sequence(delay, change));
|
|
|
+ var move_04_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_MINE);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(-100, -40), 30, 4);
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_02, move_03, move_03_end, spawn, move_04_end, jump));
|
|
|
},
|
|
|
|
|
|
// 对手接球,从右到左
|
|
|
- rivalPatRToL:function() {
|
|
|
+ rivalPatRToL_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
var beginPos = cc.v2(112, 328);
|
|
|
var dropPos = cc.v2(-22, 16);
|
|
|
var endPos = cc.v2(-122, -182);
|
|
@@ -169,21 +292,210 @@ cc.Class({
|
|
|
// 将节点移动到指定位置
|
|
|
this.head.setPosition(beginPos);
|
|
|
|
|
|
+ // 贝塞尔曲线的关键点
|
|
|
var bezier_01 = [beginPos, cc.v2(45, 172), dropPos];
|
|
|
var bezier_02 = [dropPos, cc.v2(-120, -10), endPos];
|
|
|
|
|
|
+ // 第一条路线
|
|
|
+ var move_01 = cc.bezierTo(0.5, bezier_01);
|
|
|
+ var self = this;
|
|
|
+ // 中间碰到了桌面
|
|
|
+ var move_01_end = cc.callFunc(function() {
|
|
|
+ self.bump(dropPos);
|
|
|
+ });
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_MINE_LEFT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_MINE);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(-100, -40), 30, 3);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
+ },
|
|
|
+
|
|
|
+ // 对手接球,第二种从右到左
|
|
|
+ rivalPatRToL_02:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
+ var beginPos = cc.v2(103, 272);
|
|
|
+ var dropPos = cc.v2(-15, 23);
|
|
|
+ var endPos = cc.v2(-135, -123);
|
|
|
+
|
|
|
+ // 将节点移动到指定位置
|
|
|
+ this.head.setPosition(beginPos);
|
|
|
+
|
|
|
+ // 贝塞尔曲线的关键点
|
|
|
+ var bezier_01 = [beginPos, cc.v2(-15, 350), dropPos];
|
|
|
+ var bezier_02 = [dropPos, cc.v2(-85, 65), endPos];
|
|
|
+
|
|
|
+ // 第一条路线
|
|
|
+ var move_01 = cc.bezierTo(0.5, bezier_01);
|
|
|
+ var self = this;
|
|
|
+ // 中间碰到了桌面
|
|
|
+ var move_01_end = cc.callFunc(function() {
|
|
|
+ self.bump(dropPos);
|
|
|
+ });
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_MINE_LEFT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_MINE);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(-100, -40), 30, 3);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
+ },
|
|
|
+
|
|
|
+ // 对手接球,从左到左
|
|
|
+ rivalPatLToL_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
+ var beginPos = cc.v2(-53, 272);
|
|
|
+ var dropPos = cc.v2(-73, 10);
|
|
|
+ var endPos = cc.v2(-127, -171);
|
|
|
+
|
|
|
+ // 将节点移动到指定位置
|
|
|
+ this.head.setPosition(beginPos);
|
|
|
+
|
|
|
+ // 贝塞尔曲线的关键点
|
|
|
+ var bezier_01 = [beginPos, cc.v2(-63, 149), dropPos];
|
|
|
+ var bezier_02 = [dropPos, cc.v2(-95, -40), endPos];
|
|
|
+
|
|
|
+ // 第一条路线
|
|
|
+ var move_01 = cc.bezierTo(0.5, bezier_01);
|
|
|
+ var self = this;
|
|
|
+ // 中间碰到了桌面
|
|
|
+ var move_01_end = cc.callFunc(function() {
|
|
|
+ self.bump(dropPos);
|
|
|
+ });
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_MINE_LEFT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_MINE);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(-40, -40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ // 对手接球,从左到右
|
|
|
+ rivalPatLToR_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
+ var beginPos = cc.v2(-56, 298);
|
|
|
+ var dropPos = cc.v2(25, 13);
|
|
|
+ var endPos = cc.v2(95, -115);
|
|
|
+
|
|
|
+ // 将节点移动到指定位置
|
|
|
+ this.head.setPosition(beginPos);
|
|
|
+
|
|
|
+ // 贝塞尔曲线的关键点
|
|
|
+ var bezier_01 = [beginPos, cc.v2(4, 145), dropPos];
|
|
|
+ var bezier_02 = [dropPos, cc.v2(95, -35), endPos];
|
|
|
+
|
|
|
+ // 第一条路线
|
|
|
var move_01 = cc.bezierTo(0.5, bezier_01);
|
|
|
var self = this;
|
|
|
+ // 中间碰到了桌面
|
|
|
var move_01_end = cc.callFunc(function() {
|
|
|
self.bump(dropPos);
|
|
|
});
|
|
|
- var move_02 = cc.bezierTo(0.5, bezier_02);
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_MINE_RIGHT_PEEL);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_MINE);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(40, -40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
+ },
|
|
|
+
|
|
|
+ // 对手接球,从右到右
|
|
|
+ rivalPatRToR_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
+ var beginPos = cc.v2(101, 271);
|
|
|
+ var dropPos = cc.v2(49, 29);
|
|
|
+ var endPos = cc.v2(24, -171);
|
|
|
+
|
|
|
+ // 将节点移动到指定位置
|
|
|
+ this.head.setPosition(beginPos);
|
|
|
+
|
|
|
+ // 贝塞尔曲线的关键点
|
|
|
+ var bezier_01 = [beginPos, cc.v2(50, 450), dropPos];
|
|
|
+ var bezier_02 = [dropPos, cc.v2(15, 95), endPos];
|
|
|
|
|
|
- this.head.runAction(cc.sequence(move_01, move_01_end, move_02));
|
|
|
+ // 第一条路线
|
|
|
+ var move_01 = cc.bezierTo(0.5, bezier_01);
|
|
|
+ var self = this;
|
|
|
+ // 中间碰到了桌面
|
|
|
+ var move_01_end = cc.callFunc(function() {
|
|
|
+ self.bump(dropPos);
|
|
|
+ });
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_MINE_RIGHT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_MINE);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(-40, -40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
+ },
|
|
|
+
|
|
|
+ // 对手接球,第二种从右到右
|
|
|
+ rivalPatRToR_02:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
+ var beginPos = cc.v2(98, 273);
|
|
|
+ var dropPos = cc.v2(49, 21);
|
|
|
+ var endPos = cc.v2(28, -130);
|
|
|
+
|
|
|
+ // 将节点移动到指定位置
|
|
|
+ this.head.setPosition(beginPos);
|
|
|
+
|
|
|
+ // 贝塞尔曲线的关键点
|
|
|
+ var bezier_01 = [beginPos, cc.v2(68, 147), dropPos];
|
|
|
+ var bezier_02 = [dropPos, cc.v2(15, -20), endPos];
|
|
|
+
|
|
|
+ // 第一条路线
|
|
|
+ var move_01 = cc.bezierTo(0.5, bezier_01);
|
|
|
+ var self = this;
|
|
|
+ // 中间碰到了桌面
|
|
|
+ var move_01_end = cc.callFunc(function() {
|
|
|
+ self.bump(dropPos);
|
|
|
+ });
|
|
|
+ var move_02 = cc.bezierTo(0.75, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_MINE_RIGHT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_MINE);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(-40, -40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
},
|
|
|
|
|
|
// 对手削球,从左到左
|
|
|
- rivalPeelLtoL:function() {
|
|
|
+ rivalPeelLtoL_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
var beginPos = cc.v2(-95, 263);
|
|
|
var centerPos = cc.v2(-75, 58);
|
|
|
var endPos = cc.v2(-66, -163);
|
|
@@ -199,11 +511,45 @@ cc.Class({
|
|
|
}, this);
|
|
|
var bezier_02 = [centerPos, cc.v2(-125, 40), endPos];
|
|
|
var move_02 = cc.bezierTo(1, bezier_02);
|
|
|
- var move_02_end = cc.callFunc(function() {
|
|
|
- cc.log ("动作 2 结束 ... ");
|
|
|
- }, this);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_MINE_LEFT_PAT);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_MINE);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(-40, -40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
+ },
|
|
|
+
|
|
|
+ // 对手削球,从左到右
|
|
|
+ rivalPeelLtoR_01:function() {
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(this.ballconfig.BALL_STATE_FLYING);
|
|
|
+ }
|
|
|
+
|
|
|
+ var beginPos = cc.v2(-95, 264);
|
|
|
+ var centerPos = cc.v2(30, 5);
|
|
|
+ var endPos = cc.v2(163, -140);
|
|
|
+
|
|
|
+ // 将节点移动到指定位置
|
|
|
+ this.head.setPosition(beginPos);
|
|
|
|
|
|
- this.head.runAction(cc.sequence(move_01, move_01_end, move_02, move_02_end));
|
|
|
+ var bezier_01 = [beginPos, cc.v2(-270, 440), centerPos];
|
|
|
+ var move_01 = cc.bezierTo(1, bezier_01);
|
|
|
+ var move_01_end = cc.callFunc(function() {
|
|
|
+ cc.log ("动作 1 结束 ... ");
|
|
|
+ this.bump(centerPos);
|
|
|
+ }, this);
|
|
|
+ var bezier_02 = [centerPos, cc.v2(110, 20), endPos];
|
|
|
+ var move_02 = cc.bezierTo(1, bezier_02);
|
|
|
+ // 在第二条路线后开始的一段时间,需要通知控制器改变状态
|
|
|
+ var delay = cc.delayTime(0.25);
|
|
|
+ var change = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_MINE_RIGHT_PEEL);
|
|
|
+ var spawn = cc.spawn(move_02, cc.sequence(delay, change));
|
|
|
+ var move_02_end = cc.callFunc(this.changeState, this, this.ballconfig.BALL_STATE_DROP_IN_MINE);
|
|
|
+ var jump = cc.jumpBy(1, cc.v2(40, -40), 30, 2);
|
|
|
+
|
|
|
+ this.head.runAction(cc.sequence(move_01, move_01_end, spawn, move_02_end, jump));
|
|
|
},
|
|
|
|
|
|
// 球磕碰
|
|
@@ -214,16 +560,24 @@ cc.Class({
|
|
|
this.showBump = true;
|
|
|
},
|
|
|
|
|
|
+ // 更改状态
|
|
|
+ changeState:function(node, state) {
|
|
|
+ cc.log ("改变状态 ... " + state);
|
|
|
+ if(this.stateCallback != null) {
|
|
|
+ this.stateCallback(state);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
// 绘图
|
|
|
draw:function(delay) {
|
|
|
this.g.clear();
|
|
|
|
|
|
// 画脑袋和身体
|
|
|
- this.g.lineWidth = this.config.CIRCLE_WIDTH
|
|
|
+ this.g.lineWidth = this.gameconfig.CIRCLE_WIDTH
|
|
|
|
|
|
// 画个头部
|
|
|
this.g.fillColor.fromHEX('#ff00000');
|
|
|
- this.g.circle(this.head.x, this.head.y, this.config.HEAD_SIZE);
|
|
|
+ this.g.circle(this.head.x, this.head.y, this.gameconfig.HEAD_SIZE);
|
|
|
this.g.close();
|
|
|
this.g.stroke();
|
|
|
this.g.fill();
|
|
@@ -238,6 +592,7 @@ cc.Class({
|
|
|
|
|
|
this.g.stroke();
|
|
|
|
|
|
+
|
|
|
// 当需要绘制撞击点时
|
|
|
if (this.showBump) {
|
|
|
|
|
@@ -278,27 +633,17 @@ cc.Class({
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- update (dt) {
|
|
|
+ // 帧更新
|
|
|
+ ballUpdate:function (dt) {
|
|
|
// 记录当前的位置
|
|
|
var news = [this.head.position];
|
|
|
// 在结合当前的数组
|
|
|
this.poses = news.concat(this.poses);
|
|
|
// 如果数组长度大于20,则将最后一个删除
|
|
|
- if (this.poses.length > 20) {
|
|
|
+ if (this.poses.length > 10) {
|
|
|
this.poses.pop();
|
|
|
}
|
|
|
|
|
|
this.draw(dt);
|
|
|
-
|
|
|
- var beginPos = cc.v2(112, 328);
|
|
|
- var dropPos = cc.v2(-22, 16);
|
|
|
- var endPos = cc.v2(-122, -182);
|
|
|
-
|
|
|
- // 画手臂
|
|
|
- this.g.lineWidth = this.config.LINE_WIDTH;
|
|
|
- this.g.moveTo(beginPos.x, beginPos.y);
|
|
|
- this.g.bezierCurveTo(beginPos.x, beginPos.y, 45, 172, dropPos.x, dropPos.y);
|
|
|
- this.g.bezierCurveTo(dropPos.x, dropPos.y, -120, -10, endPos.x, endPos.y);
|
|
|
- this.g.stroke();
|
|
|
},
|
|
|
});
|