NodeTouch.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. const PlayerStateStatic = require('PlayerState');
  2. cc.Class({
  3. extends: cc.Component,
  4. properties: {
  5. Level: {
  6. default: null,
  7. type: cc.Node
  8. },
  9. Hero: {
  10. default: null,
  11. type: cc.Node
  12. },
  13. player: {
  14. default: null,
  15. type: cc.Node
  16. },
  17. enableTouch:true,
  18. //todo 控制是否可以点击
  19. TouchControlEnableTouch : false,
  20. PlayerCollisionLine:null,
  21. PlayerStateScript:null,
  22. HeroControlScript:null,
  23. },
  24. onLoad:function () {
  25. this.isFristClick = false;
  26. },
  27. start : function () {
  28. cc.director.getCollisionManager().enabled = true;
  29. this.PlayerStateScript = this.Hero.getComponent("PlayerState");
  30. this.HeroControlScript = this.Hero.getComponent("HeroControl");
  31. // this.PlayerCollisionLine = this.Hero.getChildByName("Player").getChildByName('PlayerCollisionLine');
  32. this.PlayerCollisionLine = this.Hero.getChildByName('Player').getChildByName('PlayerCollisionLine');
  33. this.touchClick();
  34. },
  35. touchClick : function () {
  36. // cc.log("按屏幕了",this.enableTouch,this.TouchControlEnableTouch);
  37. var TouchLayout = cc.find("TouchLayout");
  38. var self = this;
  39. TouchLayout.on(cc.Node.EventType.TOUCH_START, function (event) {
  40. var self = this;
  41. // var layout = this.getChildByName("TouchLayout");
  42. // var touches = event.getTouches();
  43. // var touchLoc = touches[0].getLocation();
  44. // cc.log("限制 允许 前",this.TouchControlEnableTouch);
  45. if(!this.enableTouch)return;
  46. if(!this.TouchControlEnableTouch)return;
  47. // cc.log("限制 允许 后",this.TouchControlEnableTouch);
  48. var HeroControlPosition = self.HeroControlScript.node.getPosition();
  49. var PlayerCollisionLinePosition = cc.p(HeroControlPosition.x-360,0);//HeroControlPosition.y+self.PlayerCollisionLine.getPosition().y-3);
  50. // cc.log(self.PlayerCollisionLine.getPosition());
  51. if(self.PlayerStateScript.CurrentInZoneType!=PlayerStateStatic.ZoneType.FrontLongAccelerationBand
  52. && self.PlayerStateScript.CurrentInZoneType!=PlayerStateStatic.ZoneType.CenterLongAccelerationBand)
  53. {
  54. self.Level.getComponent('LevelControl').SetLocationLine(PlayerCollisionLinePosition);
  55. }
  56. // cc.log(PlayerStateScript.CurrentInZoneType);
  57. if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.FrontAccelerationBand) //AccelerationBand
  58. {
  59. self.HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.FrontAccelerationBand);
  60. self.PlayerStateScript.BTouchedScreenInTheZone = true;
  61. // cc.log('TouchedFrontAccelerationBand' );
  62. // cc.log("点击 一般加速1");
  63. }
  64. else if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.AccelerationBandCenter)
  65. {
  66. self.PlayerStateScript.BTouchedScreenInTheZone = true;
  67. self.HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.AccelerationBandCenter);
  68. self.player.getComponent("Charactor").setOnTouchListener(event);
  69. // HeroControlScript.EnableHeroMoving(false);
  70. // cc.log("点击 完美加速");
  71. var AccelerationBandCenterSprite = self.PlayerStateScript.AccelerationBandCenterTouched.node.getComponent(cc.Sprite);
  72. AccelerationBandCenterSprite.destroy();
  73. // cc.log('TouchedAccelerationBandCenter' );
  74. }
  75. else if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.BehindAccelerationBand)
  76. {
  77. self.HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.BehindAccelerationBand);
  78. self.PlayerStateScript.BTouchedScreenInTheZone = true;
  79. // cc.log('TouchedBehindAccelerationBand' );
  80. // cc.log("点击 一般加速2");
  81. }
  82. else if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.PreHurdleBand)//Hurdle
  83. {
  84. self.enableTouch = false;
  85. self.PlayerStateScript.BTouchedScreenInTheZone = true;
  86. self.HeroControlScript.HeroJump();
  87. self.HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.PreHurdleBand);
  88. self.player.getComponent("Charactor").setOnHurdlingListener(event);
  89. self.schedule(function()
  90. {
  91. self.PlayerStateScript.Barrier.getComponent("Barrier").Shake();
  92. }, 0.2, 0);
  93. self.schedule(function()
  94. {
  95. self.enableTouch = true;
  96. }, 0.5, 0);
  97. }
  98. else if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.PerfectHurdleBand)
  99. {
  100. // cc.log("现在动作","跨栏");
  101. self.enableTouch = false;
  102. self.PlayerStateScript.BTouchedScreenInTheZone = true;
  103. self.HeroControlScript.HeroJump();
  104. self.HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.PerfectHurdleBand);
  105. self.player.getComponent("Charactor").setOnHurdlingListener(event);
  106. var AccelerationBandCenterSprite = self.PlayerStateScript.AccelerationBandCenterTouched.node.getComponent(cc.Sprite);
  107. AccelerationBandCenterSprite.destroy();
  108. self.schedule(function()
  109. {
  110. self.enableTouch = true;
  111. }, 0.5, 0);
  112. }
  113. else if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.FrontLongAccelerationBand)
  114. {
  115. self.HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.FrontLongAccelerationBand);
  116. self.PlayerStateScript.BTouchedScreenInTheZone = true;
  117. self.schedule(function()
  118. {
  119. this.PlayerStateScript.BDrawYellowLine = true;
  120. }, 0.02, 0);
  121. // self.PlayerCollisionLine = this.Level.getComponent('LevelControl').CreateYellowLongAccelerationLine(PlayerCollisionLinePosition);
  122. // HeroControlScript.EnableHeroMoving(false);
  123. // cc.log(self.PlayerCollisionLine);
  124. // cc.loader.loadRes('res/Levels/LongAccelerationBand10ColumnHasFrames/yellowLongAccelerationLine', cc.SpriteFrame,function(err,spriteFrame){
  125. // cc.log('111');
  126. // //创建一个新的节点,因为cc.Sprite是组件不能直接挂载到节点上,只能添加到为节点的一个组件
  127. // var node=new cc.Node('myNode');
  128. //
  129. // node.setPosition(PlayerCollisionLine.getPosition());
  130. // //调用新建的node的addComponent函数,会返回一个sprite的对象
  131. // const sprite=node.addComponent(cc.Sprite);
  132. // //给sprite的spriteFrame属性 赋值
  133. // sprite.spriteFrame=spriteFrame;
  134. // //把新的节点追加到self.node节点去。self.node,就是脚本挂载的节点
  135. // this.Level.addChild(node);
  136. // })
  137. }
  138. else if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.CenterLongAccelerationBand)
  139. {
  140. self.PlayerStateScript.BDrawYellowLine = !self.PlayerStateScript.BDrawYellowLine;
  141. self.PlayerStateScript.BTouchedScreenInTheZone = true;
  142. }
  143. else if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.BehindLongAccelerationBand)
  144. {
  145. self.HeroControlScript.Stagger();
  146. }
  147. else if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.FrontLongJumpBand)//Hurdle
  148. {
  149. // cc.log("现在动作","跳远");
  150. self.enableTouch = false;
  151. self.PlayerStateScript.BTouchedScreenInTheZone = true;
  152. self.HeroControlScript.HeroLongJump();
  153. self.HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.FrontLongJumpBand);
  154. // self.player.getComponent("Charactor").setOnHurdlingListener(event);
  155. CustomLog("跳远 一般加速");
  156. self.schedule(function()
  157. {
  158. self.enableTouch = true;
  159. }, 0.5, 0);
  160. }
  161. else if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.PerfectLongJumpBand)
  162. {
  163. self.enableTouch = false;
  164. self.PlayerStateScript.BTouchedScreenInTheZone = true;
  165. self.HeroControlScript.HeroLongJump();
  166. self.HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.PerfectLongJumpBand);
  167. // self.player.getComponent("Charactor").setOnHurdlingListener(event);
  168. CustomLog("跳远 完美加速");
  169. var AccelerationBandCenterSprite = self.PlayerStateScript.PerfectLongJumpBandCenterTouched.node.getComponent(cc.Sprite);
  170. AccelerationBandCenterSprite.destroy();
  171. self.schedule(function()
  172. {
  173. self.enableTouch = true;
  174. }, 0.5, 0);
  175. }
  176. else
  177. {
  178. //todo 如果我们在不允许 点击的地方点击了 就 踉跄
  179. self.HeroControlScript.Stagger();
  180. }
  181. }.bind(this), self.node);
  182. self.node.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
  183. }.bind(this), self.node);
  184. self.node.on(cc.Node.EventType.TOUCH_END, function (event) {
  185. if(self.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.CenterLongAccelerationBand)
  186. {
  187. if(self.PlayerStateScript.BDrawYellowLine)
  188. {
  189. self.PlayerStateScript.BDrawYellowLine = !self.PlayerStateScript.BDrawYellowLine;
  190. }
  191. }
  192. }.bind(this), self.node);
  193. },
  194. update : function (dt) {
  195. if(this.PlayerStateScript.BDrawYellowLine)// && this.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.CenterLongAccelerationBand)
  196. {
  197. if(this.PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.BehindLongAccelerationBand)
  198. {
  199. this.PlayerStateScript.BDrawYellowLine = !this.PlayerStateScript.BDrawYellowLine;
  200. this.HeroControlScript.Stagger();
  201. return;
  202. }
  203. var HeroControlPosition = this.HeroControlScript.node.getPosition();
  204. for(var i=0;i<1;i++)
  205. {
  206. // var PlayerCollisionLinePosition = cc.p(HeroControlPosition.x+this.PlayerCollisionLine.getPosition().x+i,HeroControlPosition.y+this.PlayerCollisionLine.getPosition().y+3);
  207. var PlayerCollisionLinePosition = cc.p(HeroControlPosition.x-355,HeroControlPosition.y-643);
  208. // var PlayerCollisionLinePosition = cc.p(0,-640);//cc.p(360,640);
  209. this.Level.getComponent('LevelControl').CreateYellowLongAccelerationLine(PlayerCollisionLinePosition);
  210. }
  211. this.HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.CenterLongAccelerationBand);
  212. }
  213. }
  214. });