NodeTouch.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. const PlayerStateStatic = require('PlayerState');
  2. cc.Class({
  3. extends: cc.Component,
  4. properties: {
  5. Hero: {
  6. default: null,
  7. type: cc.Node
  8. },
  9. StayInFrontLongAccelerationBand:null,
  10. IsPlayingAudio:false,
  11. YellowLinePrefab:null,
  12. HeroOldPositionX:0
  13. },
  14. onLoad:function () {
  15. //todo 开始不能点击
  16. var Hero = cc.find('Hero');
  17. var PlayerStateScript = Hero.getComponent("PlayerState");
  18. PlayerStateScript.TouchControlEnableTouch = false;
  19. this.HeroControlScript = this.Hero.getComponent("HeroControl");
  20. },
  21. start : function () {
  22. cc.director.getCollisionManager().enabled = true;
  23. // cc.director.getCollisionManager().enabledDrawBoundingBox = true;
  24. // cc.director.getCollisionManager().enabledDebugDraw = true;
  25. this.touchClick();
  26. var CameraNode = cc.find("CameraNode");
  27. var Hero = cc.find("Hero");
  28. if (CameraNode!=null) {
  29. CameraNode.parent = Hero;
  30. }
  31. // this.DrawBox();
  32. },
  33. DrawBox : function () {
  34. //刚体包围盒
  35. cc.director.getPhysicsManager().debugDrawFlags = cc.PhysicsManager.DrawBits.e_aabbBit |
  36. cc.PhysicsManager.DrawBits.e_pairBit |
  37. cc.PhysicsManager.DrawBits.e_centerOfMassBit |
  38. cc.PhysicsManager.DrawBits.e_jointBit |
  39. cc.PhysicsManager.DrawBits.e_shapeBit
  40. ;
  41. },
  42. touchClick : function () {
  43. // cc.log("按屏幕了",this.enableTouch,this.TouchControlEnableTouch);
  44. var TouchLayout = cc.find("TouchLayout");
  45. var self = this;
  46. TouchLayout.on(cc.Node.EventType.TOUCH_START, function (event) {
  47. this.TOUCH_START(true);
  48. }.bind(this), self.node);
  49. self.node.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
  50. }.bind(this), self.node);
  51. self.node.on(cc.Node.EventType.TOUCH_END, function (event) {
  52. this.TOUCH_END(true);
  53. }.bind(this), self.node);
  54. },
  55. TOUCH_START:function()
  56. {
  57. var Hero = cc.find('Hero');
  58. var scene = cc.director.getScene();
  59. var Level = scene.getChildByName("Level");
  60. var HeroControlScript = Hero.getComponent("HeroControl");
  61. var PlayerStateScript = Hero.getComponent("PlayerState");
  62. // var player = Hero.getChildByName('Player');
  63. // cc.log("按下去 判断",PlayerStateScript.enableTouch,PlayerStateScript.TouchControlEnableTouch);
  64. if(!PlayerStateScript.enableTouch) return;
  65. if(!PlayerStateScript.TouchControlEnableTouch) return;
  66. var HeroControlPositionX = HeroControlScript.node.position.x -360;
  67. //setLine
  68. if(PlayerStateScript.CurrentInZoneType!=PlayerStateStatic.ZoneType.FrontLongAccelerationBand
  69. && PlayerStateScript.CurrentInZoneType!=PlayerStateStatic.ZoneType.CenterLongAccelerationBand)
  70. {
  71. var PlayerCollisionLinePosition = cc.p(HeroControlPositionX+4, 3);
  72. Level.getComponent('LevelControl').SetLocationLine(PlayerCollisionLinePosition);
  73. // cc.log("出来线吗",PlayerCollisionLinePosition);
  74. }
  75. if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.FrontLongAccelerationBand)
  76. {
  77. HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.FrontLongAccelerationBand);
  78. PlayerStateScript.BTouchedScreenInTheZone = true;
  79. var self = this;
  80. PlayerStateScript.StayInFrontLongAccelerationBand = function()
  81. {
  82. self.FillLongAccelerationArea();
  83. }
  84. PlayerStateScript.schedule(PlayerStateScript.StayInFrontLongAccelerationBand, 0.01, cc.REPEAT_FOREVER);
  85. }
  86. else if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.CenterLongAccelerationBand)
  87. {
  88. PlayerStateScript.BDrawYellowLine = !PlayerStateScript.BDrawYellowLine;
  89. PlayerStateScript.BTouchedScreenInTheZone = true;
  90. var self = this;
  91. PlayerStateScript.StayInFrontLongAccelerationBand = function()
  92. {
  93. self.FillLongAccelerationArea();
  94. }
  95. PlayerStateScript.schedule(PlayerStateScript.StayInFrontLongAccelerationBand, 0.01, cc.REPEAT_FOREVER);
  96. }
  97. else if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.BehindLongAccelerationBand)
  98. {
  99. HeroControlScript.Stagger();
  100. }
  101. },
  102. TOUCH_END:function()
  103. {
  104. var PlayerStateScript = cc.find('Hero').getComponent("PlayerState");
  105. if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.CenterLongAccelerationBand||
  106. PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.FrontLongAccelerationBand)
  107. {
  108. cc.find('Hero').getComponent('HeroControl').stopAudioByName("LongAccelerationStart");
  109. cc.find('Hero').getComponent('HeroControl').playAudioByName("LongAccelerationFinish");
  110. this.IsPlayingAudio = false;
  111. PlayerStateScript.unschedule(PlayerStateScript.StayInFrontLongAccelerationBand);
  112. }
  113. this.YellowLinePrefab = null;
  114. this.HeroOldPositionX = 0;
  115. },
  116. FillLongAccelerationArea:function() //这个大概18-25毫秒执行一次
  117. {
  118. var HeroControlScript = cc.find('Hero').getComponent("HeroControl");
  119. var PlayerStateScript = cc.find('Hero').getComponent("PlayerState");
  120. if(PlayerStateScript.CurrentInZoneType===PlayerStateStatic.ZoneType.BehindLongAccelerationBand)
  121. {
  122. PlayerStateScript.unschedule(PlayerStateScript.StayInFrontLongAccelerationBand);
  123. HeroControlScript.Stagger();
  124. cc.find('Hero').getComponent('HeroControl').stopAudioByName("LongAccelerationStart");
  125. cc.find('Hero').getComponent('HeroControl').playAudioByName("LongAccelerationFinish");
  126. this.IsPlayingAudio = false;
  127. return;
  128. }
  129. if(this.IsPlayingAudio == false){
  130. this.IsPlayingAudio = true;
  131. cc.find('Hero').getComponent('HeroControl').playAudioByName("LongAccelerationStart");
  132. }
  133. // var HeroControlPosition = HeroControlScript.node.getPosition();
  134. // cc.log(this.HeroOldPositionX+"==HeroOldPositionX");
  135. if(this.HeroOldPositionX == 0){
  136. this.HeroOldPositionX = HeroControlScript.node.x;
  137. return;
  138. }
  139. var SubPositionX = HeroControlScript.node.x - this.HeroOldPositionX;
  140. var YellowLinePosition = cc.p(HeroControlScript.node.x+50,HeroControlScript.node.y-641-55);
  141. // var YellowLinePosition = cc.p(HeroControlScript.node.x,HeroControlScript.node.y-641);
  142. if(this.YellowLinePrefab == null){
  143. this.YellowLinePrefab = cc.find('Level').getComponent('LevelControl').CreateYellowBG(YellowLinePosition);
  144. }
  145. this.YellowLinePrefab.getChildByName('Mask').getChildByName('YellowBG').x+=SubPositionX;
  146. this.HeroOldPositionX = HeroControlScript.node.x;
  147. HeroControlScript.SpeedUp(PlayerStateStatic.ColliderSpeedUpPoint.CenterLongAccelerationBand);
  148. var NetworkSocket = cc.find('Hero').getComponent('NetworkSocket');
  149. var data = { FunctionName: 'LongAccelerationBandSpeedUp'};
  150. NetworkSocket.sendSyncData(JSON.stringify(data));
  151. },
  152. PrintCurrentState:function(PlayerStateScript)
  153. {
  154. switch (PlayerStateScript.CurrentInZoneType)
  155. {
  156. case 0 :
  157. cc.log('None');
  158. break;
  159. case 1 :
  160. cc.log('FrontAccelerationBand');
  161. break;
  162. case 2 :
  163. cc.log('AccelerationBandCenter');
  164. break;
  165. case 3 :
  166. cc.log('BehindAccelerationBand');
  167. break;
  168. case 4 :
  169. cc.log('PreHurdleBand');
  170. break;
  171. case 5 :
  172. cc.log('PerfectHurdleBand');
  173. break;
  174. case 6 :
  175. cc.log('FrontLongAccelerationBand');
  176. break;
  177. case 7 :
  178. cc.log('CenterLongAccelerationBand');
  179. break;
  180. case 8 :
  181. cc.log('BehindLongAccelerationBand');
  182. break;
  183. case 9 :
  184. cc.log('FrontLongJumpBand');
  185. break;
  186. case 10 :
  187. cc.log('PerfectLongJumpBand');
  188. break;
  189. }
  190. },
  191. update:function(dt)
  192. {
  193. var Rivel = cc.find('Rivel');
  194. var Hero = cc.find('Hero');
  195. // cc.log(Math.abs(Rivel.position.x-Hero.position.x));
  196. // if(Math.abs(Rivel.position.x-Hero.position.x)>3000 && this.distanceX<3000)
  197. // {
  198. // cc.log('distance>3000')
  199. // }
  200. //
  201. // if(Math.abs(Rivel.position.x-Hero.position.x)<3000 && this.distanceX>3000)
  202. // {
  203. // cc.log('distance<3000')
  204. // }
  205. // this.distanceX=Math.abs(Rivel.position.x-Hero.position.x);
  206. }
  207. });
  208. //todo 多点触碰 制裁
  209. cc.Node.maxTouchNum = 1;
  210. cc.Node.touchNum = 0;
  211. var __dispatchEvent__ = cc.Node.prototype.dispatchEvent;
  212. cc.Node.prototype.dispatchEvent = function (event) {
  213. switch (event.type) {
  214. case 'touchstart':
  215. if (cc.Node.touchNum < cc.Node.maxTouchNum) {
  216. cc.Node.touchNum++;
  217. this._canTouch = true;
  218. __dispatchEvent__.call(this, event);
  219. }
  220. break;
  221. case 'touchmove':
  222. if (!this._canTouch && cc.Node.touchNum < cc.Node.maxTouchNum) {
  223. this._canTouch = true;
  224. cc.Node.touchNum++;
  225. }
  226. if (this._canTouch) {
  227. __dispatchEvent__.call(this, event);
  228. }
  229. break;
  230. case 'touchend':
  231. if (this._canTouch) {
  232. this._canTouch = false;
  233. cc.Node.touchNum--;
  234. __dispatchEvent__.call(this, event);
  235. }
  236. break;
  237. case 'touchcancel':
  238. if (this._canTouch) {
  239. this._canTouch = false;
  240. cc.Node.touchNum--;
  241. __dispatchEvent__.call(this, event);
  242. }
  243. break;
  244. default:
  245. __dispatchEvent__.call(this, event);
  246. }
  247. };