NodeTouch.js 11 KB

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