// Learn cc.Class: // - https://docs.cocos.com/creator/manual/en/scripting/class.html // Learn Attribute: // - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html cc.Class({ extends: cc.Component, properties: { Car_Park:cc.Node, Car:cc.Prefab, IsMoveNode:false, Merge_TX: cc.Prefab, Cars_Run_Area: cc.Node, Cars_Run_detail: cc.Prefab, Bind_Car_Run:cc.Node }, // LIFE-CYCLE CALLBACKS: onLoad() { this.Cars_Run_Area = cc.find("Canvas/Main/role/Run_cars"); }, setIsMoveTrue() { this.IsMoveNode = true; }, start () { //监听拖动 this.registerEvent(); }, registerEvent() { //touchstart 可以换成cc.Node.EventType.TOUCH_START this.node.on('touchstart', this.onEventStart, this); //touchmove 可以换成cc.Node.EventType.TOUCH_MOVE this.Car_Park.on('touchmove', this.onEventMove, this); //touchcancel 可以换成cc.Node.EventType.TOUCH_CANCEL this.Car_Park.on('touchcancel', this.onEventEnd, this); //touchend 可以换成cc.Node.EventType.TOUCH_END this.Car_Park.on('touchend', this.onEventEnd, this); }, onEventStart(event){ this.IsMoveNode = true; cc.director.getCollisionManager().enabled = true; }, onEventMove(event){ //将世界坐标转为本地坐标 var nodepos = this.node.parent.convertTouchToNodeSpace(event); //将car移动到nodepos this.Car_Park.setPosition(nodepos); //console.log(nodepos) }, onEventEnd(event){ //初始位置是120,100 this.Car_Park.setPosition(120,100); this.IsMoveNode = false; cc.director.getCollisionManager().enabled = false; }, // update (dt) {}, //碰撞回调 /** * 当碰撞产生的时候调用 * @param {Collider} other 产生碰撞的另一个碰撞组件 * @param {Collider} self 产生碰撞的自身的碰撞组件 */ onCollisionEnter: function (other, self) { console.log(self.node.getChildByName("number").getComponents(cc.Label)[0].string); if(this.IsMoveNode){ return } if (!Global.endinit) { Global.toast("请等待汽车加载完成!") return; } // console.log('on collision enter'); var self_level = Number(self.node.getChildByName("number").getComponents(cc.Label)[0].string); var other_level = Number(other.node.getChildByName("number").getComponents(cc.Label)[0].string); if (self_level == other_level) { if (self_level == 25) { //满级大佬,不给升级 return; } // other.node.parent.active = false; other.node.parent.destroy(); this.addNewCar(self_level); } }, MergeCarAction(node){ let carnode = cc.instantiate(this.Merge_TX); carnode.parent = node; }, addNewCar(level) { MyAudio.PlayEffect_initcar(); let kongpark = this.node.parent; //this.node.active = false; this.node.destroy(); var carnode = cc.instantiate(this.Car); carnode.getChildByName("number").getComponent(cc.Label).string = level + 1; let pic_url = Global.Cars[level+1].car_park_pic cc.resources.load(pic_url, cc.SpriteFrame, function (err, spriteFrame) { carnode.getComponent(cc.Sprite).spriteFrame = spriteFrame; }); this.MergeCarAction(carnode); carnode.parent = kongpark; if (kongpark.getComponent("CarBindRunAndPark").Bind_Car_Run != null) { kongpark.getComponent("CarBindRunAndPark").Bind_Car_Run.destroy(); // console.log("destroy") } carnode.parent.getComponent("CarBindRunAndPark").Bind(this.UpdateCar(level)); //console.log(cc.find('Canvas/Main/role/Stop_cars/car_park').children) // this.UpdateCar(level); }, //根据停车场车辆情况,更新跑道上车辆的信息,主要是每次merge后调用 //@level: 被合并的汽车的等级,跑道需要消灭1个该等级的车,然后升级一个该等级的车 UpdateCar(level) { var car_run_node = cc.instantiate(this.Cars_Run_detail); car_run_node.getChildByName("number_pic").getChildByName("level_number").getComponent(cc.Label).string = level + 1; cc.resources.load(Global.Cars[level + 1].car_run_pic, cc.SpriteFrame, function (err, spriteFrame) { car_run_node.getComponent(cc.Sprite).spriteFrame = spriteFrame; //更新每秒收益值 cc.find("Canvas/Main/role/Stop_cars/car_park").getComponent("CarManager").AfterCarAddOrMerge(); }); car_run_node.parent = this.Cars_Run_Area; //判断是否破纪录 if (level + 1 > Global.MaxCarLevel) { Global.MaxCarLevel = level + 1; this.updateWXRank(); if (Global.MaxCarLevel >= 8) { //更新addcar级别 Storage.Set_storage(Storage.GameMessageType.buy_car_level, Global.MaxCarLevel - 6); //更新addcar价格,原有价格翻倍 Storage.Set_storage(Storage.GameMessageType.buy_coin, Number(Storage.Get_storage(Storage.GameMessageType.buy_coin)) * 2); //更新add按钮ui cc.find('Canvas/Main/role/Stop_cars/Add_Car').getComponent('CarAddPark').updateAddCarButton(); setTimeout(function () { cc.find('Canvas/Main/role/Stop_cars/Add_Car').getComponent('CarAddPark').UpdateLowLevelCar(Global.MaxCarLevel - 6); },1000) } } return car_run_node; }, updateWXRank(){ Global.CocosAnalysticCustomEvent('LEVEL', Global.MaxCarLevel) } });