| 
					
				 | 
			
			
				@@ -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(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 |