import { ryw_Event } from "../../../FrameWork/Event/EventEnum"; import EventMgr from "../../../FrameWork/Event/EventMgr"; import Common from "../../../FrameWork/Util/Common"; import Common5 from "../../../Platform/th/Common5"; import Game from "../../../Scripts/Game"; const {ccclass, property} = cc._decorator; @ccclass export default class ZhaoChaV3Base extends cc.Component { @property({type:cc.Node,tooltip:'时间节点位置'}) protected timeNode:cc.Node = null; @property({type:cc.Node,tooltip:'最外mask'}) protected maskNode:cc.Node = null; @property({type:cc.Node,tooltip:'茬点找到的masksp'}) protected maskSp:cc.Node = null; @property({type:cc.Node,tooltip:'可视的背景图片'}) protected bg:cc.Node = null; @property({type:cc.Node,tooltip:'使用镜子后可见的背景图片'}) protected maskBg:cc.Node = null; @property({type:cc.Node,tooltip:'镜子'}) protected fangdajing:cc.Node = null; @property({type:cc.Node,tooltip:'茬点节点集合'}) protected chaDianNode:cc.Node = null; bundle = null subUrl = null protected handFeiChaDianEvent(touchPos){ console.log("handFeiChaDianEvent基类==") } protected chaDianConfig = { ChaNode:{}, FeiChanDian:{}, soundurl:'', totalMoney:0, minMoney:0 } // 找到茬点后的回调函数 protected afterChaDianFindCallback(nameStr){ console.log("afterChaDianFindCallback基类==") } //特殊节点的点击事件(主要处理节点可以移动的问题) protected specialNodeMoveEvent(){ console.log("afterChaDianFindCallback基类==") } // 找到茬点前的回调函数 protected beforeChaDianFindCallback = null; protected leftBaoJiaMoney:number = 0 protected diJiaMoney:number = 0 onLoad () { console.log('base onload') Common.Type = 2; Common.subLevel = 0; Common.GameSubTipConfigs=[Common5.gameConfig.zmGameConfig[Common5.selectGameNum].toolTip] this.bundle = Common5.gameConfig.zmGameConfig[Common5.selectGameNum].bundle this.subUrl = Common5.gameConfig.zmGameConfig[Common5.selectGameNum].suburl } start () { this.leftBaoJiaMoney = this.chaDianConfig.totalMoney this.diJiaMoney = this.chaDianConfig.minMoney console.log('base start this.leftBaoJiaMoney',this.leftBaoJiaMoney) this.node.getChildByName("duiHuaDi").getChildByName("baoJiaStr").getComponent(cc.Label).string = this.leftBaoJiaMoney + "元" EventMgr.onEvent_custom(ryw_Event.timeOut, (tab) => { Game.ins.showFail(); }, this); this.setTimeNode(); this.openNodeTouch(this.fangdajing, null, this.touchMove, null) this.openNodeTouch(this.bg, this.bgTouchStart, this.bgTouchMove, this.bgTouchEnd) this.specialNodeMoveEvent() } protected getEventTargetLoc(event){ let nodeLoc = event.getLocation() let nodePos = event.target.parent.convertToNodeSpaceAR(nodeLoc) return nodePos } //放大镜的位置移动 protected touchMove(event: cc.Event.EventTouch){ event.target.setPosition(this.getEventTargetLoc(event)); this.goToBoundaryFDJ() let pos = Common5.getRelativePosition(this.bg, this.maskBg.parent); this.maskBg.setPosition(pos); } //背景图片的点击 protected touchStartTime = Date.now(); protected bgTouchStart(event: cc.Event.EventTouch){ Common5.playEffect("click") this.touchStartTime = Date.now(); } //背景图片的点击与移动 protected bgTouchEnd(event: cc.Event.EventTouch){ if(Date.now() - this.touchStartTime > 0.2 * 1000){ }else{ let touchPos = event.getLocation(); let rect = this.maskBg.parent.getChildByName('rect').getBoundingBoxToWorld(); if(rect.contains(touchPos)){ this.checkIsInAreaNewVersion(touchPos) } } } //背景图片的移动 protected bgTouchMove(event: cc.Event.EventTouch){ let delta = event.getDelta() this.bg.x += delta.x this.goToBoundaryBg() let pos = Common5.getRelativePosition(this.bg, this.maskBg.parent); this.maskBg.setPosition(pos); } //检测边界(背景) protected goToBoundaryBg(){ let widthMask = this.maskNode.width //let heightMask = this.maskNode.height let widthMap = this.bg.width * 1 //let heightMap = this.bg.height * 1 //右边界 if(this.bg.x + widthMap/2 <= widthMask/2){ this.bg.x = widthMask/2 - widthMap/2 //左边界 }else if(this.bg.x - widthMap/2>= -widthMask/2){ this.bg.x = -widthMask/2 + widthMap/2 } // //上边界 // if(this.bg.y + heightMap/2 <= heightMask/2){ // this.bg.y = heightMask/2 - heightMap/2 // //下边界 // }else if(this.bg.y - heightMap/2 >= -heightMask/2){ // this.bg.y = -heightMask/2 + heightMap/2 // } } //检测边界(放大镜) protected goToBoundaryFDJ(){ let widthMask = this.maskNode.width let heightMask = this.maskNode.height //右边界 if(this.fangdajing.x >= widthMask/2 -5){ this.fangdajing.x = widthMask/2 -5 //左边界 }else if(this.fangdajing.x <= -widthMask/2 + 100 ){ this.fangdajing.x = -widthMask/2 + 100 } //上边界 if(this.fangdajing.y >= heightMask/2 - 100){ this.fangdajing.y = heightMask/2 - 100 //下边界 }else if(this.fangdajing.y <= -heightMask/2 + 5){ this.fangdajing.y = -heightMask/2 + 5 } } // 判断是否找到茬点 protected checkIsInAreaNewVersion(touchPos){ let childrens = this.chaDianNode.children for(var i =0;i{ toolTipnode.removeFromParent() }).start(); } //刷新底价数值 protected refreshDiJiaNum(){ this.node.getChildByName("duiHuaDi").getChildByName("diJiaStr").getComponent(cc.Label).string = this.diJiaMoney + "元" } //设置倒计时节点的位置 protected setTimeNode(){ let worldPos = this.timeNode.getPosition() Game.ins.setTimePos(worldPos.x,worldPos.y) Game.ins.setTimeScale(0.7) } protected openNodeTouch(p:cc.Node, cbTouchStart, cbTouchMove, cbTouchEnd){ cbTouchStart && p.on(cc.Node.EventType.TOUCH_START, cbTouchStart, this); cbTouchMove && p.on(cc.Node.EventType.TOUCH_MOVE, cbTouchMove, this); cbTouchEnd && p.on(cc.Node.EventType.TOUCH_END, cbTouchEnd, this); cbTouchEnd && p.on(cc.Node.EventType.TOUCH_CANCEL, cbTouchEnd, this); } protected closeNodeTouch(p:cc.Node, cbTouchStart, cbTouchMove, cbTouchEnd){ cbTouchStart && p.off(cc.Node.EventType.TOUCH_START, cbTouchStart, this); cbTouchMove && p.off(cc.Node.EventType.TOUCH_MOVE, cbTouchMove, this); cbTouchEnd && p.off(cc.Node.EventType.TOUCH_END, cbTouchEnd, this); cbTouchEnd && p.off(cc.Node.EventType.TOUCH_CANCEL, cbTouchEnd, this); } protected showDialogue(soundUrl){ Common5.playEffectCustom(this.bundle,this.chaDianConfig.soundurl + soundUrl) let dialog = this.node.getChildByName("duiHuaDi").getChildByName("dialog") dialog.getChildByName("dialogStr").getComponent(cc.Label).string = soundUrl dialog.stopAllActions() dialog.active = true dialog.scale = 0 cc.tween(dialog) .to(0.2,{scale:1}) .delay(2.8) .to(0.2,{scale:0}) .call(()=>{ dialog.active = false }) .start() } protected closeStartTips(){ this.maskNode.getChildByName("startTips").active = false } }