CarMerge.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. // Learn cc.Class:
  2. // - https://docs.cocos.com/creator/manual/en/scripting/class.html
  3. // Learn Attribute:
  4. // - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
  5. // Learn life-cycle callbacks:
  6. // - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
  7. cc.Class({
  8. extends: cc.Component,
  9. properties: {
  10. Car_Park:cc.Node,
  11. Car:cc.Prefab,
  12. IsMoveNode:false,
  13. Merge_TX: cc.Prefab,
  14. Cars_Run_Area: cc.Node,
  15. Cars_Run_detail: cc.Prefab,
  16. Bind_Car_Run:cc.Node
  17. },
  18. // LIFE-CYCLE CALLBACKS:
  19. onLoad() {
  20. this.Cars_Run_Area = cc.find("Canvas/Main/role/Run_cars");
  21. },
  22. setIsMoveTrue() {
  23. this.IsMoveNode = true;
  24. },
  25. start () {
  26. //监听拖动
  27. this.registerEvent();
  28. },
  29. registerEvent() {
  30. //touchstart 可以换成cc.Node.EventType.TOUCH_START
  31. this.node.on('touchstart', this.onEventStart, this);
  32. //touchmove 可以换成cc.Node.EventType.TOUCH_MOVE
  33. this.Car_Park.on('touchmove', this.onEventMove, this);
  34. //touchcancel 可以换成cc.Node.EventType.TOUCH_CANCEL
  35. this.Car_Park.on('touchcancel', this.onEventEnd, this);
  36. //touchend 可以换成cc.Node.EventType.TOUCH_END
  37. this.Car_Park.on('touchend', this.onEventEnd, this);
  38. },
  39. onEventStart(event){
  40. this.IsMoveNode = true;
  41. cc.director.getCollisionManager().enabled = true;
  42. },
  43. onEventMove(event){
  44. //将世界坐标转为本地坐标
  45. var nodepos = this.node.parent.convertTouchToNodeSpace(event);
  46. //将car移动到nodepos
  47. this.Car_Park.setPosition(nodepos);
  48. //console.log(nodepos)
  49. },
  50. onEventEnd(event){
  51. //初始位置是120,100
  52. this.Car_Park.setPosition(120,100);
  53. this.IsMoveNode = false;
  54. cc.director.getCollisionManager().enabled = false;
  55. },
  56. // update (dt) {},
  57. //碰撞回调
  58. /**
  59. * 当碰撞产生的时候调用
  60. * @param {Collider} other 产生碰撞的另一个碰撞组件
  61. * @param {Collider} self 产生碰撞的自身的碰撞组件
  62. */
  63. onCollisionEnter: function (other, self) {
  64. console.log(self.node.getChildByName("number").getComponents(cc.Label)[0].string);
  65. if(this.IsMoveNode){
  66. return
  67. }
  68. if (!Global.endinit) {
  69. Global.toast("请等待汽车加载完成!")
  70. return;
  71. }
  72. // console.log('on collision enter');
  73. var self_level = Number(self.node.getChildByName("number").getComponents(cc.Label)[0].string);
  74. var other_level = Number(other.node.getChildByName("number").getComponents(cc.Label)[0].string);
  75. if (self_level == other_level) {
  76. if (self_level == 25) {
  77. //满级大佬,不给升级
  78. return;
  79. }
  80. // other.node.parent.active = false;
  81. other.node.parent.destroy();
  82. this.addNewCar(self_level);
  83. }
  84. },
  85. MergeCarAction(node){
  86. let carnode = cc.instantiate(this.Merge_TX);
  87. carnode.parent = node;
  88. },
  89. addNewCar(level) {
  90. MyAudio.PlayEffect_initcar();
  91. let kongpark = this.node.parent;
  92. //this.node.active = false;
  93. this.node.destroy();
  94. var carnode = cc.instantiate(this.Car);
  95. carnode.getChildByName("number").getComponent(cc.Label).string = level + 1;
  96. let pic_url = Global.Cars[level+1].car_park_pic
  97. cc.resources.load(pic_url, cc.SpriteFrame, function (err, spriteFrame) {
  98. carnode.getComponent(cc.Sprite).spriteFrame = spriteFrame;
  99. });
  100. this.MergeCarAction(carnode);
  101. carnode.parent = kongpark;
  102. if (kongpark.getComponent("CarBindRunAndPark").Bind_Car_Run != null) {
  103. kongpark.getComponent("CarBindRunAndPark").Bind_Car_Run.destroy();
  104. // console.log("destroy")
  105. }
  106. carnode.parent.getComponent("CarBindRunAndPark").Bind(this.UpdateCar(level));
  107. //console.log(cc.find('Canvas/Main/role/Stop_cars/car_park').children)
  108. // this.UpdateCar(level);
  109. },
  110. //根据停车场车辆情况,更新跑道上车辆的信息,主要是每次merge后调用
  111. //@level: 被合并的汽车的等级,跑道需要消灭1个该等级的车,然后升级一个该等级的车
  112. UpdateCar(level) {
  113. var car_run_node = cc.instantiate(this.Cars_Run_detail);
  114. car_run_node.getChildByName("number_pic").getChildByName("level_number").getComponent(cc.Label).string = level + 1;
  115. cc.resources.load(Global.Cars[level + 1].car_run_pic, cc.SpriteFrame, function (err, spriteFrame) {
  116. car_run_node.getComponent(cc.Sprite).spriteFrame = spriteFrame;
  117. //更新每秒收益值
  118. cc.find("Canvas/Main/role/Stop_cars/car_park").getComponent("CarManager").AfterCarAddOrMerge();
  119. });
  120. car_run_node.parent = this.Cars_Run_Area;
  121. //判断是否破纪录
  122. if (level + 1 > Global.MaxCarLevel) {
  123. Global.MaxCarLevel = level + 1;
  124. this.updateWXRank();
  125. if (Global.MaxCarLevel >= 8) {
  126. //更新addcar级别
  127. Storage.Set_storage(Storage.GameMessageType.buy_car_level, Global.MaxCarLevel - 6);
  128. //更新addcar价格,原有价格翻倍
  129. Storage.Set_storage(Storage.GameMessageType.buy_coin, Number(Storage.Get_storage(Storage.GameMessageType.buy_coin)) * 2);
  130. //更新add按钮ui
  131. cc.find('Canvas/Main/role/Stop_cars/Add_Car').getComponent('CarAddPark').updateAddCarButton();
  132. setTimeout(function () {
  133. cc.find('Canvas/Main/role/Stop_cars/Add_Car').getComponent('CarAddPark').UpdateLowLevelCar(Global.MaxCarLevel - 6);
  134. },1000)
  135. }
  136. }
  137. return car_run_node;
  138. },
  139. updateWXRank(){
  140. Global.CocosAnalysticCustomEvent('LEVEL', Global.MaxCarLevel)
  141. }
  142. });