// Learn TypeScript: // - https://docs.cocos.com/creator/manual/en/scripting/typescript.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 const {ccclass, property} = cc._decorator; export enum BlockType{ /*普通地块 */ Nomal = 0, /*起点地块 */ Start = 1, /*湿地 */ Nunja = 2, /*山峰 */ Peak = 3, /*终点地块 */ End = 4, /*息壤 */ Xi_Soil = 5, /*加固 */ Reinforce = 6 } export enum PathType{ err = "err", up = "up", down = "down", left = "left", right = "right", up_left = "up_left", up_right = "up_right", down_left = "down_left", down_right = "down_right", left_up = "left_up", left_down = "left_down", right_up = "right_up", right_down = "right_down", } @ccclass export default class NewClass extends cc.Component { // LIFE-CYCLE CALLBACKS: @property(cc.SpriteAtlas) UI: cc.SpriteAtlas = null; pos_Shifting:number; block_Type:number; path_Type:string; finishi:boolean; pos: any; onLoad () { this.finishi = false; this.pos_Shifting = 0; this.pos = cc.v2(0,0); } start () { } //初始化地图块数据 initData(type,pos,max){ this.block_Type = type; this.pos = cc.v2(pos.x,pos.y); // if(this.pos.y%2 == 0) this.node.getChildByName("tip").active = true; if(type == cc.Enum(BlockType).Start){ var bg = this.node.getChildByName("sp"); // this.node.getComponent(cc.Sprite).spriteFrame = null; bg.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start"]; if(cc.fx.GameConfig.GM_INFO.level > 3){ bg.getChildByName("start").y = 20; bg.getChildByName("end").y = 20; } this.rotateTarget(bg,"start",pos,max); } else if(type == cc.Enum(BlockType).End){ var bg = this.node.getChildByName("sp"); // this.node.getComponent(cc.Sprite).spriteFrame = null; bg.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end"]; if(cc.fx.GameConfig.GM_INFO.level > 3){ bg.getChildByName("start").y = 20; bg.getChildByName("end").y = 20; } this.rotateTarget(bg,"end",pos,max); } else if(type == cc.Enum(BlockType).Nunja){ let random = Math.floor(Math.random()*4); let rotationArr = [0,90,180,270]; let rotation = rotationArr[random]; this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e5"]; this.node.getChildByName("bg").angle = -rotation; this.node.getComponent(cc.Sprite).spriteFrame = null; } else if(type == cc.Enum(BlockType).Peak){ let random = Math.floor(Math.random()*4+1); let name = "shan" + random; this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; this.node.getComponent(cc.Sprite).spriteFrame = null; } if(cc.fx.GameConfig.GM_INFO.level == 1){ this.node.getChildByName("tipWin").opacity = 220; this.node.getChildByName("tipLose").opacity = 220; } else if(cc.fx.GameConfig.GM_INFO.level == 2){ this.node.getChildByName("tipWin").opacity = 100; this.node.getChildByName("tipLose").opacity = 100; } else if(cc.fx.GameConfig.GM_INFO.level == 3){ this.node.getChildByName("tipWin").opacity = 50; this.node.getChildByName("tipLose").opacity = 50; } else if(cc.fx.GameConfig.GM_INFO.level > 3){ this.node.getChildByName("tipWin").opacity = 0; this.node.getChildByName("tipLose").opacity = 0; } } //旋转入海口和出海口的 图片以及文字角度 rotateTarget(bg,name,pos,max){ let target = bg.getChildByName(name); if(pos.y == max.y-1){ bg.angle = 0; if(name == "end") target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_x"]; target.active = true; target.angle = 0; return; } else if(pos.y == 0){ bg.angle = -180; if(name == "end")target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_x"]; target.active = true; target.angle = -180; return; } else if(pos.x == max.x-1){ bg.angle = 90; if(name == "start")target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start_y"]; else target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_y"]; target.active = true; target.angle = -90; } else if(pos.x == 0){ bg.angle = -90; if(name == "start")target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start_y"]; else target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_y"]; target.active = true; target.angle = 90; } } setPath(type){ this.path_Type = type; } //设置息壤在起点 set_Xi_Soil(direction,type){ let sp = this.node.getChildByName("sp"); let turn = this.node.getChildByName("turnStart"); let water = this.node.getChildByName("waterStart"); if(direction == "left" || direction == "right"){ if(sp.angle == 0){ turn.active =true; water.active = true; water.opacity = 0; if(type){ turn.angle = direction=="left"?90:0; water.angle = direction=="left"?90:0; } else{ turn.angle = direction=="left"?0:90; water.angle = direction=="left"?0:90; } } else if(sp.angle == -180){ turn.active =true; water.active = true; water.opacity = 0; if(type){ turn.angle = direction=="left"?-180:-90; water.angle = direction=="left"?-180:-90; } else{ turn.angle = direction=="left"?270:-180; water.angle = direction=="left"?270:-180; } } else if(sp.angle == -90){ turn.active =true; turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"]; turn.angle = 90; if(type){ water.active = true; water.angle = 90; water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"]; water.opacity = 0; } } else if(sp.angle == 90){ turn.active =true; turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"]; turn.angle = 90; if(type){ water.active = true; water.angle = 90; water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"]; water.opacity = 0; } } } else if(direction == "up" || direction == "down"){ let sp = this.node.getChildByName("sp"); if(sp.angle == -90){ turn.active =true; water.active = true; water.opacity = 0; if(type){ turn.angle = direction=="up"?0:-90; water.angle = direction=="up"?0:-90; } else{ turn.angle = direction=="up"?-90:0; water.angle = direction=="up"?-90:0; } } else if(sp.angle == 90){ turn.active = true; water.active = true; water.opacity = 0; if(type){ turn.angle = direction=="up"?90:180; water.angle = direction=="up"?90:180; } else{ turn.angle = direction=="up"?180:90; water.angle = direction=="up"?180:90; } } else if(sp.angle == 0){ turn.active =true; turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"]; turn.angle = 0; if(type){ water.active = true; water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"]; water.opacity = 0; } } else if(sp.angle == -180){ turn.active =true; turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"]; turn.angle = 0; if(type){ water.active = true; water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"]; water.opacity = 0; } } } } //息壤具体执行方法 外部可调用 set_Xi_SoilType(direction,end,name){ // console.log("息壤",direction,name,this.block_Type); var jg = this.repeatRoad(true,direction); console.log("息壤重复判断结果",jg); if(jg == true) return; if(this.block_Type == cc.Enum(BlockType).Start){ this.set_Xi_Soil(direction,false); return; } if(this.block_Type == cc.Enum(BlockType).Nunja){ this.block_Type = cc.Enum(BlockType).Nomal; this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = null; this.node.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block_Bg"]; } if(end != null){ if(this.block_Type == cc.Enum(BlockType).End){ this.finishi = true; setTimeout(() => { this.set_Xi_Soil(direction,true); }, 500); } setTimeout(() => { if(name == "water") cc.fx.Notifications.emit(cc.fx.Message.nextWater,(end+1)); else cc.fx.Notifications.emit(cc.fx.Message.next,(end+1)); }, 400); } if(this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start){ this.block_Type = cc.Enum(BlockType).Xi_Soil; } else{ } let target = this.node.getChildByName("Xi_Soil"); this.path_Type = direction; target.active = true; target.opacity = 0; cc.tween(target) .to(0.1,{opacity:255}) .to(0.1,{opacity:0}) .call(() =>{ if(direction != null && end == null){ let data = { order:0, time:cc.fx.GameConfig.TIME_INFO.waterSpeed[0], type:0, circulate:false }; if(name == "water"){ this.runWater(data); } else this.runRoad(data); } }) .start(); } //判断重复路径 repeatRoad(type,direction){ //如果双向都占用了还进来就算死了- var jg = false; if(this.node.getChildByName("vertical2").active == true && this.node.getChildByName("horizontal2").active == true){ // alert("治水失败"); jg = true; if(type){ cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose"); cc.fx.Notifications.emit(cc.fx.Message.setData,false); } } else if(this.node.getChildByName("turn2").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil){ // alert("治水失败"); jg = true; if(type){ cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose"); cc.fx.Notifications.emit(cc.fx.Message.setData,false); } } if(direction){ if(this.node.getChildByName("vertical2").active == true && this.block_Type == cc.Enum(BlockType).Xi_Soil && (direction == "up"|| direction =="down")){ // alert("治水失败"); jg = true; if(type){ cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose"); cc.fx.Notifications.emit(cc.fx.Message.setData,false); } } else if(this.node.getChildByName("horizontal2").active == true && this.block_Type == cc.Enum(BlockType).Xi_Soil && (direction == "right"|| direction =="left")){ // alert("治水失败"); jg = true; if(type){ cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose"); cc.fx.Notifications.emit(cc.fx.Message.setData,false); } } } return jg; } //修筑路线执行 runRoad(data){ if(this.path_Type == "err"){ setTimeout(() => { if(data.circulate) cc.fx.Notifications.emit(cc.fx.Message.next,order); }, data.time); return; } var jg = this.repeatRoad(true,null); if(jg == true) return; var target = null; var progress = 1; var time = data.time; var order = data.order + 1; var random = Math.floor(Math.random()*4 + 1); target = this.node.getChildByName("vertical2"); if(target.name == "vertical"){ let water1 = target.getChildByName("wave").getChildByName("water1"); let water2 = target.getChildByName("wave").getChildByName("water2"); let water3 = target.getChildByName("wave").getChildByName("water3"); let timeDelay = 0.15; water1.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water1.x,120)),cc.delayTime(timeDelay), cc.callFunc(()=>{ water1.y = -120 })).repeatForever()); water2.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water2.x,120)),cc.delayTime(timeDelay), cc.callFunc(()=>{ water2.y = -120 })).repeatForever()); water3.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water3.x,120)),cc.delayTime(timeDelay), cc.callFunc(()=>{ water3.y = -120 })).repeatForever()); } var name = "a" + random; if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; if(target.active == true){ target = this.node.getChildByName("horizontal2"); name = "b" + random; if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } // console.log(this.path_Type,data.order); if(this.path_Type == cc.Enum(PathType).up){ } else if(this.path_Type == cc.Enum(PathType).down){ target.angle = 180; } else if(this.path_Type == cc.Enum(PathType).left){ target.angle = 90; name = "b" + random; if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } else if(this.path_Type == cc.Enum(PathType).right){ target.angle = 270; name = "b" + random; if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } else{ target = this.node.getChildByName("turn2"); if(target.name == "turn"){ let water = target.getChildByName("wave").getChildByName("water"); water.opacity = 0 water.runAction(cc.sequence(cc.rotateTo(7.2,-1080),cc.delayTime(0)).repeatForever()); setTimeout(() => { water.opacity = 255; }, 200); } name = "c" + random; if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; progress = 0.25; if(this.path_Type == cc.Enum(PathType).up_left){ target.setPosition(-this.pos_Shifting,-this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).up_right){ target.scaleX = -1; target.setPosition(this.pos_Shifting,-this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).down_left){ target.angle = 180; target.scaleX = -1; target.setPosition(-this.pos_Shifting,this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).down_right){ target.angle = 180; target.setPosition(this.pos_Shifting,this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).left_up){ target.angle = -90; target.scaleY = -1; target.setPosition(this.pos_Shifting,this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).left_down){ target.angle = 90; target.setPosition(-this.pos_Shifting,-this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).right_up){ target.angle = -90; target.setPosition(-this.pos_Shifting,this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).right_down){ target.angle = -90; target.scaleX = -1; target.setPosition(-this.pos_Shifting,-this.pos_Shifting); } } if(this.path_Type == "Reinforce"){ target = this.node.getChildByName("Reinforce"); if(this.block_Type == cc.Enum(BlockType).Peak){ cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose"); cc.fx.Notifications.emit(cc.fx.Message.setData,false); return; } if(this.block_Type != cc.Enum(BlockType).End)this.block_Type = cc.Enum(BlockType).Reinforce; this.node.getChildByName("vertical2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e1"]; this.node.getChildByName("turn2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e3"]; this.node.getChildByName("horizontal2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e2"]; target.active = true; target.opacity = 0; progress = 1; cc.tween(target) .to(cc.fx.GameConfig.TIME_INFO.ReinforceSpeed,{opacity:255}) .call(() =>{ if(data.circulate) cc.fx.Notifications.emit(cc.fx.Message.changeMap,order); cc.fx.Notifications.emit(cc.fx.Message.next,order); }) .start(); } else if(this.path_Type == "Xi_Soil"){ target.active = false; if(this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start) this.block_Type = cc.Enum(BlockType).Xi_Soil; target = this.node.getChildByName("Xi_Soil"); target.active = true; target.opacity = 0; cc.tween(target) .to(0.01,{opacity:1}) .to(0.01,{opacity:0}) .call(() =>{ if(data.circulate){ cc.fx.Notifications.emit(cc.fx.Message.next,order); } }) .start(); } else if(this.path_Type == "End"){ target.active = false; if(this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start) this.block_Type = cc.Enum(BlockType).Xi_Soil; let posTemp = data.last; var direction = "up"; if(this.pos.x - posTemp.x >= 1){ direction = "right"; } else if(this.pos.x - posTemp.x <= -1){ direction = "left"; } else if(this.pos.y - posTemp.y >= 1){ direction = "down"; } console.log("结束方向:",direction); if(!this.finishi){ this.finishi = true; this.set_Xi_Soil(direction,true); } } else{ target.active = true; if(this.block_Type != cc.Enum(BlockType).Xi_Soil){ target.getComponent(cc.Sprite).fillRange = 0; cc.tween(target.getComponent(cc.Sprite)) .to(time,{fillRange:progress}) .call(() =>{ if(data.circulate) cc.fx.Notifications.emit(cc.fx.Message.next,order); }) .start(); } else{ target.opacity = 0; target.getComponent(cc.Sprite).fillRange = 1; cc.tween(target) .to(time,{opacity:255}) .call(() =>{ if(data.circulate) cc.fx.Notifications.emit(cc.fx.Message.next,order); }) .start(); } } } //洪峰执行 runWater(data){ if(this.node.getChildByName("waterStart").active == true && this.block_Type == cc.Enum(BlockType).Start){ // sp.getChildByName("waterStart").opacity = 255; cc.tween(this.node.getChildByName("waterStart")) .to(0.2,{opacity:255}) .start(); } if(this.path_Type == "err"){ setTimeout(() => { if(data.circulate) cc.fx.Notifications.emit(cc.fx.Message.nextWater,order); }, data.time); return; } //如果双向都占用了还进来就算死了- if(this.node.getChildByName("vertical").active == true && this.node.getChildByName("horizontal").active == true){ // alert("治水失败"); cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose"); cc.fx.Notifications.emit(cc.fx.Message.setData,false); // cc.director.loadScene("GameScene"); return; } else if(this.node.getChildByName("turn").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil){ // alert("治水失败"); cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose"); cc.fx.Notifications.emit(cc.fx.Message.setData,false); // cc.director.loadScene("GameScene"); return; } var target = null; var progress = 1; var time = data.time; var order = data.order + 1; var random = Math.floor(Math.random()*4 + 1); target = this.node.getChildByName("vertical"); if(target.name == "vertical"){ let water1 = target.getChildByName("wave").getChildByName("water1"); let water2 = target.getChildByName("wave").getChildByName("water2"); let water3 = target.getChildByName("wave").getChildByName("water3"); let timeDelay = 0.15; water1.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water1.x,120)),cc.delayTime(timeDelay), cc.callFunc(()=>{ water1.y = -120 })).repeatForever()); water2.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water2.x,120)),cc.delayTime(timeDelay), cc.callFunc(()=>{ water2.y = -120 })).repeatForever()); water3.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water3.x,120)),cc.delayTime(timeDelay), cc.callFunc(()=>{ water3.y = -120 })).repeatForever()); } var name = "a" + random; // if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; if(target.active == true){ target = this.node.getChildByName("horizontal"); let water1 = target.getChildByName("wave").getChildByName("water1"); let water2 = target.getChildByName("wave").getChildByName("water2"); let water3 = target.getChildByName("wave").getChildByName("water3"); let timeDelay = 0.15; water1.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water1.x,120)),cc.delayTime(timeDelay), cc.callFunc(()=>{ water1.y = -120 })).repeatForever()); water2.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water2.x,120)),cc.delayTime(timeDelay), cc.callFunc(()=>{ water2.y = -120 })).repeatForever()); water3.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water3.x,120)),cc.delayTime(timeDelay), cc.callFunc(()=>{ water3.y = -120 })).repeatForever()); name = "b" + random; //if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } // console.log(this.path_Type,data.order); if(this.path_Type == cc.Enum(PathType).up){ } else if(this.path_Type == cc.Enum(PathType).down){ target.angle = 180; } else if(this.path_Type == cc.Enum(PathType).left){ target.angle = 90; name = "b" + random; //if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } else if(this.path_Type == cc.Enum(PathType).right){ target.angle = 270; name = "b" + random; //if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } else{ target = this.node.getChildByName("turn"); if(target.name == "turn"){ let water = target.getChildByName("wave").getChildByName("water"); water.opacity = 0 water.runAction(cc.sequence(cc.rotateTo(7.2,-1080),cc.delayTime(0)).repeatForever()); setTimeout(() => { water.opacity = 255; }, 200); } name = "c" + random; //if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; progress = 0.25; if(this.path_Type == cc.Enum(PathType).up_left){ target.setPosition(-this.pos_Shifting,-this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).up_right){ target.scaleX = -1; target.setPosition(this.pos_Shifting,-this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).down_left){ target.angle = 180; target.scaleX = -1; target.setPosition(-this.pos_Shifting,this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).down_right){ target.angle = 180; target.setPosition(this.pos_Shifting,this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).left_up){ target.angle = -90; target.scaleY = -1; target.setPosition(this.pos_Shifting,this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).left_down){ target.angle = 90; target.setPosition(-this.pos_Shifting,-this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).right_up){ target.angle = -90; target.setPosition(-this.pos_Shifting,this.pos_Shifting); } else if(this.path_Type == cc.Enum(PathType).right_down){ target.angle = -90; target.scaleX = -1; target.setPosition(-this.pos_Shifting,-this.pos_Shifting); } } if(this.path_Type == "End"){ target.active = false; if(this.block_Type == cc.Enum(BlockType).End){ if(this.node.getChildByName("waterStart").active == true && this.block_Type == cc.Enum(BlockType).End){ cc.tween(this.node.getChildByName("waterStart")) .to(0.2,{opacity:255}) .call(()=>{ // alert("治水成功"); cc.fx.Notifications.emit(cc.fx.Message.showResult,"win"); cc.fx.Notifications.emit(cc.fx.Message.setData,true); if(cc.fx.GameConfig.GM_INFO.level < 7){ cc.fx.GameConfig.GM_INFO.level += 1; } setTimeout(() => { // cc.director.loadScene("GameScene"); }, 500); }) .start(); } } else{ target = this.node.getChildByName("End"); target.active = true; target.opacity = 0; let posTemp = data.last; if(this.pos.x - posTemp.x >= 1){ target.angle = -90; } else if(this.pos.x - posTemp.x <= -1){ target.angle = 90; } else if(this.pos.y - posTemp.y >= 1){ target.angle = 180; } cc.tween(target) .to(0.5,{opacity:255}) .call(() =>{ // alert("治水失败") cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose"); cc.fx.Notifications.emit(cc.fx.Message.setData,false); // cc.director.loadScene("GameScene"); }) .start(); } } else{ target.active = true; target.getComponent(cc.Sprite).fillRange = 0; cc.tween(target.getComponent(cc.Sprite)) .to(time,{fillRange:progress}) .call(() =>{ if(data.circulate) cc.fx.Notifications.emit(cc.fx.Message.nextWater,order); }) .start(); } } // update (dt) {} }