import BaseEvent from "../base/BaseEvent"; /** * 藤蔓控制的门 */ const {ccclass, property} = cc._decorator; @ccclass export default class FOpenDoorVine extends BaseEvent { @property(cc.Prefab) mMapDialog: cc.Prefab = null; @property([cc.String]) text: Array = []; @property({ displayName: '靠近的提示', type: cc.Node }) mNearTips: cc.Node = null; @property({ displayName: '藤蔓出现的提示', type: cc.Node }) mFindTips: cc.Node = null; @property({ displayName: '提示图标', type: cc.SpriteFrame }) mTipsIcon: cc.SpriteFrame = null; @property({ displayName: '出现的藤蔓', type: cc.Node }) mGearNode: cc.Node = null; private isOver = false onLoad() { super.onLoad() if(this.mGearNode){ this.mGearNode.active = false } if(this.mNearTips){ this.mNearTips.active = false } if(this.mFindTips){ this.mFindTips.active = false } } onBegin(tag:number){ if(this.isOver){ return } if (tag == 1) { if(this.mNearTips){ this.mNearTips.active = false } this.showOpt(this.mTipsIcon, () => { this.closeOpt() this.pause() this.dialog(0) }) }else if(tag == 2){ if(this.mNearTips){ this.mNearTips.active = true } } } onEnd(tag:number){ if (tag == 1) { this.closeOpt() }else if (tag == 2) { if(this.mNearTips){ this.mNearTips.active = false } } } private dialog(index:number){ if(index >= this.text.length){ if(this.mGearNode){ this.vine() } return; } let texts = this.text[index].split('|') let mid = parseInt(texts.shift()); if(mid == -1){//主角 let my = this.ff.mainSprite.node; this.showDialog(my,texts,()=>{ index ++; this.dialog(index); }); } } /** * 藤蔓出现 */ private vine(){ let pos = this.mGearNode.getPosition() let target = this.mGearNode.children[0].children[0] this.mGearNode.active = true target.y += 100 this.moveCamera(pos,1,()=>{ cc.tween(target).sequence( cc.moveBy(1,cc.v2(0,-100)), cc.callFunc(()=>{ this.isOver = true this.resume() if(this.mFindTips){ this.mFindTips.active = true } }) ).start() }) } }