// Learn cc.Class: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/class.html // - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/class.html // Learn Attribute: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html // - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/life-cycle-callbacks.html var gameConfig = require("gameConfig"); cc.Class({ extends: cc.Component, properties: { sp_equip: { default: null, type: cc.Sprite, }, nd_chose: { default: null, type: cc.Node, }, sp_quality: { default: null, type: cc.Sprite, }, }, // LIFE-CYCLE CALLBACKS: // onLoad () {}, onLoad() { this.dropTime = 1; this._initTouchEvent(); this.startTime = 0; this.startUpdate = false; if (this.sp_quality) { this.sp_quality.spriteFrame = null; } }, setdata(player, idx) { this.idx = idx; this.player = player; this.oldscale = this.node.scale; if (this.idx > 2) { if (!cc.pcmode) { this.node.active = false; } this.lb_count = this.node .getChildByName("lb_count") .getComponent(cc.Label); this.lb_count.string = "0"; } // if(idx==4){ // this.node.active = false; // } }, changeguncount() { if (this.lb_count) { this.lb_count.string = cc.gameMgr.watchPlayer.pctrl.gunsammo[this.idx]; } }, onGetIetm(lv) { if (this.idx > 2) { this.lb_count.string = cc.gameMgr.watchPlayer.pctrl.gunsammo[this.idx]; this.node.active = true; } if (cc.gameMgr.watchPlayer.pctrl.guns[this.idx] == 0) { if (this.idx > 2 && !cc.pcmode) { this.node.active = false; } if (this.idx == 1) { cc.gameMgr.uic.lb_bulletCount.node.opacity = 0; } else if (this.idx == 2) { cc.gameMgr.uic.lb_bulletCount2.node.opacity = 0; } if (this.gunpb) { cc.gameMgr.effectManager.huishouprefab(this.gunpb.pname, this.gunpb); this.gunpb = null; } this.sp_equip.spriteFrame = null; if (this.sp_quality) { this.sp_quality.spriteFrame = null; } return; } // this.node.active = true var self = this; var cdata = gameConfig.dropItemConfig[cc.gameMgr.watchPlayer.pctrl.guns[this.idx]]; if (this.idx == 1 || this.idx == 2) { if (this.idx == 1) { cc.gameMgr.uic.lb_bulletCount.node.opacity = 255; } else if (this.idx == 2) { cc.gameMgr.uic.lb_bulletCount2.node.opacity = 255; } this.sp_equip.spriteFrame = null; var cb = function (nd) { if (self.gunpb) { if (cc.gameMgr && cc.gameMgr.effectManager) { cc.gameMgr.effectManager.huishouprefab( self.gunpb.pname, self.gunpb ); } self.gunpb = null; } if (cc.gameMgr.watchPlayer.pctrl.guns[self.idx] == 0) { return; } nd.pname = cdata.world_img; self.gunpb = nd; nd.scale = 1; self.sp_equip.node.addChild(nd); if (!lv) { lv = 1; } var cmp = nd.getComponent(cc.Animation); if (cmp) { cmp.play(nd.pname + "_" + lv); } if (cdata.offx) { nd.x = cdata.offx; } else { nd.x = 0; } if (cdata.offy) { nd.y = cdata.offy; } else { nd.y = 0; } }; cc.gameMgr.effectManager.createprefab( cdata.world_img, "prefabs/gunprefab/", cb ); this.sp_quality.spriteFrame = null; cc.loader.loadRes( "icons/pic_quality" + cdata.quality, cc.SpriteFrame, function (err, res) { if (!err && self.isValid) { self.sp_quality.spriteFrame = res; } } ); return; } var img = cdata.world_img; cc.loader.loadRes("icons/" + img, cc.SpriteFrame, function (err, res) { if (!err && self.isValid) { self.sp_equip.node.position = cc.v2( self.sp_equip.node.position.x, self.sp_equip.node.position.y + 40 ); self.sp_equip.spriteFrame = res; self.sp_equip.node.runAction( cc.spawn( cc.fadeIn(0.3), cc.moveTo( 0.3, cc.v2(self.sp_equip.node.x, self.sp_equip.node.y - 40) ) ) ); } else { } }); }, _initTouchEvent: function () { this.node.on(cc.Node.EventType.TOUCH_START, this._touchStartEvent, this); this.node.on(cc.Node.EventType.TOUCH_END, this._touchEndEvent, this); this.node.on(cc.Node.EventType.TOUCH_CANCEL, this._touchCanCelEvent, this); cc.Notifier.on("getGun", this, this.getGun.bind(this)); cc.Notifier.on("switchGun", this, this.switchGun.bind(this)); cc.Notifier.on("changeguncount", this, this.changeguncount.bind(this)); //cc.director.on('boomSwitch', this.boomSwitch,this); }, getGun(res) { if (this.idx == res.idx) { this.onGetIetm(res.lv); // if(res.idx==4&&this.player.guns[3]==0){ // cc.director.emit('boomSwitch',4,3) // } // else if(res.idx==3&&this.player.guns[4]==0){ // cc.director.emit('boomSwitch',3,4) // } } }, switchGun(gun) { if (this.idx == gun) { if (this.nd_chose) { this.nd_chose.active = true; } } else { if (this.nd_chose) { this.nd_chose.active = false; } } }, onDestroy() { this.node.off(cc.Node.EventType.TOUCH_START, this._touchStartEvent, this); this.node.off(cc.Node.EventType.TOUCH_END, this._touchEndEvent, this); this.node.off(cc.Node.EventType.TOUCH_CANCEL, this._touchCanCelEvent, this); cc.Notifier.off("getGun", this); cc.Notifier.off("switchGun", this); cc.Notifier.off("changeguncount", this); //cc.director.off('boomSwitch', this.boomSwitch,this); }, // boomSwitch(idx,idx2){ // if(this.idx==idx){ // this.node.active = true // } // else if(this.idx==idx2){ // this.node.active = false // } // }, _touchStartEvent() { if (!this.player || this.player.isdead()) { return; } if (this.player.guns[this.idx]) { this.startTime = 0; this.startUpdate = true; this.node.scale = this.oldscale - 0.1; } }, _touchEndEvent() { if (!this.player || this.player.isdead()) { return; } if (this.startUpdate) { this.player.switchGunNet(this.idx); // if(this.idx>2){ // cc.gameMgr.uic.btn_boom.getComponent("btnEquipBoom").setidx( this.idx ) // } if (this.idx > 2 && !cc.pcmode) { this.node.parent.active = false; } } this.node.scale = this.oldscale; this.startUpdate = false; this.startTime = 0; }, _touchCanCelEvent() { if (!this.player || this.player.isdead()) { return; } this.node.scale = this.oldscale; this.startUpdate = false; this.startTime = 0; }, update(dt) { if (this.idx > 2) { return; } if (this.startUpdate) { if (this.player.othertime <= 0) { this.startTime += dt; } if (this.startTime > this.dropTime) { if (!this.player.isdead()) { this.player.dropItem(this.idx); } this.startUpdate = false; this.node.scale = this.oldscale; } } }, });