12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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;
- }
- }
|