import EventMgr from "../../../../FrameWork/Event/EventMgr"; import { ryw_Event } from "../../../../FrameWork/Event/EventEnum"; import Common5 from "../../../../Platform/th/Common5"; import Game from "../../../../Scripts/WenZiRes/ui/Game"; import Common from "../../../../FrameWork/Util/Common"; import DaDianScript from "../../../../FrameWork/Base/DaDianScript"; import GameReport from "../../../../FrameWork/Report/ZyZyReport"; import WordGameBaseComponent from "../../../../FrameWork/Base/WordGameBaseComptent"; const {ccclass, property} = cc._decorator; enum YeYeStatus{ xuehua, beixin, mianfu, } enum DoorStatus{ open, close } // "toolTip": "1.将钱拖动到三轮车\n2.将钱拖动到柴火堆", // "answer": "n\n\n7.将爷爷拖动到垃圾桶上\n8.爷爷拖动到垃圾桶上之后,再将钱拖动到垃圾桶上\n\n\n\n\n13.将钱拖动到右墙\n14.将钱拖动到墙上的海报\n15.将钱拖动到老鼠洞\n16.将钱拖动到鸡身上", let answer = [ '将钱拖动奶奶身上', //0 '将钱拖动奶奶睡的棺材',//1 '将钱拖动到墙边的火炉',//2 '将钱拖动到地上',//3 '将钱拖到墙上',//4 '将钱拖动窗户',//5 '将钱拖动到门上',//6 '上划门后,将钱拖给门外的人',//7 '将钱拖动到灶台',//8 '上划灶台上的蒸锅露出馒头,将钱拖动到馒头上',//9 '将钱拖动到美女上',//10 '上划美女露出手机,点击手机后将钱拖动到手机界面处',//11 '将钱拖动到墙角的衣服处',//12 ] let CurGameConfig = { CheckNode:[ '破旧窗户', 'nvren_check', 'nvren_check2', '老婆婆check', '床板1', '灶台', '烤火炉', 'mencheck', '黑社会大哥check', '衣服', '馒头', '手机前', '地面', '破旧墙壁', ] } @ccclass export default class PingKuRenJia extends WordGameBaseComponent{ @property(cc.Node) maskNode:cc.Node = null; @property(cc.Node) mapNode:cc.Node = null; gameInfo = null bundle = null mapNodeFixedScale:number = 0.6//固定缩放(图片太大了) touchStartTime:number = 0//触摸开始时间 originalTouchDistance:number = 0 //起始双指触摸间距 lastScale:number = 1//上次缩放值 curScale:number = 1//当前缩放值 touchId1:number = -1 touchId2:number = -2 curFinishNum:number = 0 isStepRight:boolean = true isKaiChuang:boolean = false YeYeCurStatus = YeYeStatus.xuehua yeyeMove = false yeyeAnmo: boolean = false; nainaiIsTang = false isAnmoNan: boolean = false; curDoorStatus = DoorStatus.close doorGetMoney = false chadianMax = 13 onLoad(){ DaDianScript.userEnterDaDian() Common.Type = 3; Common.subLevel = 0; Common.GameSubTipConfigs=answer//[Common5.gameConfig.zmGameConfig[Common5.selectGameNum].toolTip] // Common.GameSubAnswerConfigs=[Common5.gameConfig.zmGameConfig[Common5.selectGameNum].answer] this.bundle = Common5.gameConfig.zmGameConfig[Common5.selectGameNum].bundle EventMgr.onEvent_custom(ryw_Event.timeOut, (tab) => { Game.ins.showFail();; }, this); } start(){ super.start(); cc.macro.ENABLE_MULTI_TOUCH = true; this.initMapNodeTouchEvent() Common5.playMusicCustom('pingkurenjia','sound/背景音') EventMgr.onEvent_custom(ryw_Event.DirectTouchMoveCheck, (data_) => { if(data_.targetNode.name == 'menTouchcheck'){ this.curDoorStatus = DoorStatus.open if(this.doorGetMoney){ this.mapNode.getChildByName('破旧门开').active = false this.mapNode.getChildByName('豪华门开').active = true } Common5.playEffectCustom('pingkurenjia','sound/快还钱') this.scheduleOnce(()=>{ this.mapNode.getChildByName('气泡框1').active = false },1.0) } }, this); EventMgr.onEvent_custom(ryw_Event.NormalTouchEndCheck, (data_) => { }, this); // EventMgr.onEvent_custom(ryw_Event.NormalTouchMoveCheck, (data_) => { // this.normalTouchCallback(data_.targetNode); // }, this); } normalTouchCallback(targetNode){ } //初始化触摸监听 initMapNodeTouchEvent(){ this.initMouseEvent(); this.mapNode.on(cc.Node.EventType.TOUCH_START, this.touchStart_mapNode,this) this.mapNode.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove_mapNode,this) this.mapNode.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd_mapNode,this) this.mapNode.on(cc.Node.EventType.TOUCH_END, this.touchEnd_mapNode,this) let prefabWidth = this.mapNode.width let prefabHeight = this.mapNode.height let maskWidth = this.maskNode.width let maskHeight = this.maskNode.height let widthScale = maskWidth/prefabWidth let heightScale = maskHeight/prefabHeight if(prefabWidth= 0 && this.touchId2 >= 0){ // console.log("邵阳1—双点触摸开始") } this.touchStartTime = Date.now() } touchMove_mapNode(event){ let touches = event.getTouches() if(touches.length == 2){ //缩放 if(this.originalTouchDistance == 0){ this.originalTouchDistance = this.getDistance(touches[0].getLocation(),touches[1].getLocation()) } //获取双指移动数据 let curDistance = this.getDistance(touches[0].getLocation(),touches[1].getLocation()) let tempScale = curDistance/this.originalTouchDistance let y = 0.5*tempScale + 0.5 let scale = y * this.lastScale if(scale < this.mapNodeFixedScale){ scale = this.mapNodeFixedScale }else if(scale > 3){ scale = 3 }else{ } this.mapNode.scale = scale this.curScale = scale this.goToBoundary(); }else if(touches.length == 1){ //拖动 let delta = event.getDelta() this.mapNode.x += delta.x this.mapNode.y += delta.y // console.log(this.mapNode.scale,this.mapNode.x,this.mapNode.y); this.goToBoundary() } } touchEnd_mapNode(event){ console.log('touchEnd===') let dateNow = Date.now() if(dateNow - this.touchStartTime > 0.2 * 1000){ }else{ // this.isFind = false; let touchPos = event.getLocation(); this.checkIsInAreaNewVersion(touchPos) } if(event.touch.getID() == this.touchId1){ this.touchId1 = -1 }else if(event.touch.getID() == this.touchId2){ this.touchId2 = -2 } if(this.touchId1 < 0 && this.touchId2 < 0){ this.originalTouchDistance = 0 this.lastScale = this.curScale // this.goToBoundary() } } //距离 getDistance(startPos,endPos){ var pos = cc.v2(startPos.x - endPos.x,startPos.y - endPos.y) var dis = Math.sqrt(pos.x * pos.x + pos.y * pos.y) return dis } //检测边界 goToBoundary(){ let widthMask = this.maskNode.width let heightMask = this.maskNode.height let widthMap = this.mapNode.width*this.curScale let heightMap = this.mapNode.height*this.curScale //右边界 if(this.mapNode.x + widthMap/2 <= widthMask/2){ this.mapNode.x = widthMask/2 - widthMap/2 //左边界 }else if(this.mapNode.x - widthMap/2>= -widthMask/2){ this.mapNode.x = -widthMask/2 + widthMap/2 } //上边界 if(this.mapNode.y + heightMap/2 <= heightMask/2){ this.mapNode.y = heightMask/2 - heightMap/2 //下边界 }else if(this.mapNode.y - heightMap/2 >= -heightMask/2){ this.mapNode.y = -heightMask/2 + heightMap/2 } } initMouseEvent(){ this.mapNode.on(cc.Node.EventType.MOUSE_WHEEL,function(event){//监听名称+事件参数 console.log(event); let tmpscale = this.mapNode.scale; if (event._scrollY > 0){ if (this.mapNode.scale < 3){ tmpscale+=0.2; this.mapNode.scale = tmpscale this.curScale = tmpscale this.lastScale = tmpscale } } else { if (this.mapNode.scale > this.mapNodeFixedScale){ tmpscale-=0.2; this.mapNode.scale = tmpscale this.curScale = tmpscale this.lastScale = tmpscale } } // console.log(this.mapNode.scale,this.mapNode.x,this.mapNode.y); this.goToBoundary(); },this); } //检测node是否进入target区域(新版) checkIsInAreaNewVersion(pos){ } //特殊节点的点击事件(主要处理节点可以移动的问题) specialNodeTouchEvent(){ let qianbiNodes = this.mapNode.getChildByName("qianbiNodes") for(let i=0;i{ this.curDoorStatus = DoorStatus.close this.mapNode.getChildByName('气泡框11').active = false if(this.doorGetMoney == true){ this.mapNode.getChildByName('破旧门开').active = false this.mapNode.getChildByName('豪华门开').active = false this.mapNode.getChildByName('豪华门关').active = true }else{ this.mapNode.getChildByName('破旧门开').active = false this.mapNode.getChildByName('豪华门开').active = false this.mapNode.getChildByName('破旧门关').active = true } },1.0) }else if(checkTarget.name == '破旧窗户'){ this.unlockLevel(5) this.mapNode.getChildByName('新窗户').active = true this.showQiPao('不会吹风进来了') }else if(checkTarget.name == 'nvren_check' || checkTarget.name == 'nvren_check2' ){ this.showQiPao('新衣服好看吗') this.mapNode.getChildByName('nvren_check2').active = false this.mapNode.getChildByName('nvren_check').active = false this.mapNode.getChildByName('女').getComponent(sp.Skeleton).setAnimation(0, '后', true) this.mapNode.getChildByName('nvren_click').active = true this.unlockLevel(10) }else if(checkTarget.name == '老婆婆check'){ this.showQiPao('给奶奶买件棉衣') // this.mapNode.getChildByName('老婆婆').active = true this.unlockLevel(0) this.mapNode.getChildByName('老婆婆').getComponent(sp.Skeleton).setAnimation(0, '后', true) }else if(checkTarget.name == '床板1'){ this.unlockLevel(1) this.mapNode.getChildByName('床板1').active = false this.mapNode.getChildByName('床板2').active = false this.mapNode.getChildByName('现代床').active = true this.showQiPao('床暖和一些') }else if(checkTarget.name == '灶台'){ this.unlockLevel(8) this.mapNode.getChildByName('馒头2').active = true this.mapNode.getChildByName('锅盖').active = true this.mapNode.getChildByName('现代厨柜').active = true this.showQiPao('这灶台才适合我的气质') }else if(checkTarget.name == '烤火炉'){ this.unlockLevel(2) this.mapNode.getChildByName('空调').active = true this.showQiPao('空调才是最暖和的') }else if(checkTarget.name == 'mencheck'){ this.unlockLevel(6) this.showQiPao('防盗门安全') this.doorGetMoney = true if(this.curDoorStatus == DoorStatus.open){ this.mapNode.getChildByName('豪华门开').active = true this.mapNode.getChildByName('破旧门开').active = false }else{ this.mapNode.getChildByName('豪华门关').active = true this.mapNode.getChildByName('破旧门关').active = false } }else if(checkTarget.name == '衣服'){ this.unlockLevel(12) this.mapNode.getChildByName('洗衣机').active = true this.showQiPao('家电都得上全自动的') }else if(checkTarget.name == '馒头'){ this.unlockLevel(9) this.mapNode.getChildByName('龙虾').active = true this.showQiPao('我这身份怎么能吃馒头') }else if(checkTarget.name == '手机前'){ this.unlockLevel(11) this.mapNode.getChildByName('手机后').active = true this.scheduleOnce(()=>{ this.mapNode.getChildByName('手机后').active = false //Common5.playEffectCustom('pingkurenjia','sound/别误会,他们只是朋友') this.showQiPao('别误会,他们只是朋友') // this.mapNode.getChildByName('气泡框2').active = true // this.scheduleOnce(()=>{ // this.mapNode.getChildByName('气泡框2').active = false // },1.5) },1.5) }else if(checkTarget.name == '地面'){ this.unlockLevel(3) this.mapNode.getChildByName('木地板').active = true this.showQiPao('木地板舒服') }else if(checkTarget.name == '破旧墙壁'){ this.showQiPao('粉粉的墙很适合我') this.unlockLevel(4) this.mapNode.getChildByName('新墙壁').active = true } this.checkIsFinish() }else{ event.target.setPosition(event.target.startPos) } } showQiPao(str){ let qipaoNode = this.mapNode.getChildByName('气泡框2') qipaoNode.scale = 0 qipaoNode.active = true qipaoNode.stopAllActions() qipaoNode.getChildByName("lab").getComponent(cc.Label).string = str if (str) { Common5.playEffectCustom("pingkurenjia", "sound/"+str); } cc.tween(qipaoNode) .to(0.2,{scale:1}) .call(()=>{ }) .delay(2) .to(0.2,{scale:0}) .start() } checkArea(node,checkNodeTab){ let checkIndex = null for(let i=0;i= this.chadianMax){ console.log('结算+++===') this.scheduleOnce(()=>{ if(this.curFinishNum >= this.chadianMax){ if(this.isStepRight){ Game.ins.showSuccess() }else{ Game.ins.showFail() } } },2) } } unlockLevel(sublevel){ Game.ins.tipUnlock(sublevel) } }