import { EVENT_TYPE } from "../../../gameLogic/utrl/gameEnum"; import gameEventManager from "../../../gameLogic/utrl/gameEventManager"; const { ccclass, property } = cc._decorator; /**ui迷你地图 */ @ccclass export default class UiMiniMap extends cc.Component { /**地图图片组 */ @property(cc.SpriteFrame) maps: cc.SpriteFrame[] = []; /**地图背景 */ @property(cc.Sprite) view: cc.Sprite = null; /**当前地图外框节点 */ private cur_map_frame: cc.Node = null; onEnable() { gameEventManager.on(EVENT_TYPE.refresh_mini_map, this.setBg, this); gameEventManager.on(EVENT_TYPE.refresh_mini_map_pos, this.setPos, this); } onDisable() { gameEventManager.off(EVENT_TYPE.refresh_mini_map, this.setBg, this); gameEventManager.off(EVENT_TYPE.refresh_mini_map_pos, this.setPos, this); } /**初始化 * @param level 关卡 * @param frame 地图外框节点 */ private setBg(level: number, frame: cc.Node) { this.view.spriteFrame = this.maps[level]; this.cur_map_frame = frame; } /**设置位置点 * @param pos 玩家位置 */ private setPos(pos: cc.Vec3) { if (!this.node.active) return; let rp = pos.sub(this.cur_map_frame.position); let sx = -rp.x / this.cur_map_frame.width; let sy = -rp.y / this.cur_map_frame.height; this.view.node.x = this.view.node.width * sx; this.view.node.y = this.view.node.height * sy; } }