从零开发一个h5游戏:超实用的前端红点管理器实现

本文介绍了如何从零开发一个前端红点管理器,特别是在游戏场景中的应用。通过建立类似树的结构,初始化红点状态,并在游戏过程中动态更新叶子节点以反映父节点状态。此外,利用图的结构实现叶子节点多父节点关联,并根据模块开启状态调整红点显示。代码示例展示详细实现过程。
摘要由CSDN通过智能技术生成

这里我们要设计一个前端红点管理器
红点管理的实现原理基本就是是一颗树的实现原理,在游戏开始时初始化红点的关联状态,游戏中我们通过对红点树的叶子节点状态进行更新,从而更新父节点的状态。这里我们为了让叶子节点能够关联多个父节点,使用图的方法去实现这个前端红点,并且一个红点key也可以同时注册关联多个红点ui。
在这个红点管理器中我们加入了模块开启的判断,可以通过功能模块的开启状态来改变前端红点的状态。
下面就让我们上代码吧:


import {
    util } from "../util";
import {
    ModuleId } from "../enum";

export default class RedMgr  {
   

    private _toChildrenMap = {
   };//向上关联的map
    private _toParentMap = {
   };//向下关联的map
    private _redState = {
   };//存储红点状态{key state}

    private _redKeyObj = {
   };//存储这个对象的所有红点 数组
    private _redObjKey = {
   };//存储红点关联的所有红点对象 数组

    private _red2Mid = {
   };//红点关联模块
    private _mid2Red = {
   };//模块关联红点

    //枝干节点则由子节点更新红点状态
    private _reallyRed = [];//叶子节点模块未开启时的红点状态


    public init(): void {
   
        let map = {
   };
        let midMap = {
   };

        //==================【测试红点关联】============================
        midMap[ModuleId.Competion] = "V_ARENA_ROLE";//需要注册模块与红点的关联状态和红点的关联数
        map["V_ARENA_FILED"] = ["V_ARENA_ROLE"];
        map["V_ARENA_ROLE"] = ["V_ARENA_COMPETION"];
        map["V_ARENA_COMPETION"] = ["V_ARENA_MATCH"];
        //这里我们只需要更新叶子节点状态就可以更新这个红点树



        this._mid2Red = midMap;//把红点与模块的正反向关联注册
        for (let mid in midMap) {
   
            this._red2Mid[midMap[mid]] = mid;
        }
        this._toChildrenMap = map;//把父子节点的正反向关联注册
        this._toParentMap 
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值