广告
返回顶部
首页 > 资讯 > 精选 >CocosCreator消息分发机制的示例分析
  • 599
分享到

CocosCreator消息分发机制的示例分析

2023-06-14 13:06:51 599人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关CocosCreator消息分发机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述本篇开始介绍游戏业务架构相关的内容。在游戏业务层,所有需要隔离的系统和模块间通信

这篇文章将为大家详细讲解有关CocosCreator消息分发机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

概述

本篇开始介绍游戏业务架构相关的内容。在游戏业务层,所有需要隔离的系统和模块间通信都可以通过消息分发解耦。例如网络返回通知、数据更新同步到界面等。

消息分发基于观察者模式设计。需要处理消息的地方向消息中心注册监听回调,派发消息时,调用消息中心的派发接口遍历该消息的监听队列,调用对应的回调方法。

具体方案

先定义监听回调类型

export type NotifyListener = (src: any, data: any) => void;

通过key-value方式保存监听队列

private static msg2listDict: Dictionary< string, Array<NotifyListenerInfo> > = new Dictionary< string, Array<NotifyListenerInfo> >();

接口定义

public static addListener(msg: string, listener: NotifyListener, target?: any): void {} public static addOnceListener(msg: string, listener: NotifyListener, target?: any): void {} public static removeMsgListener(msg: string, listener: NotifyListener): void {} public static removeMsgAllListeners(msg: string): void {} public static removeTargetMsgListen(msg: string, target: any): void {} public static removeTargetAllMsgListen(target: any): void {} public static notify(msg: string, src: any, data: any): void {}

在添加移除实现中,需要注意某消息可能正在派发。

对于一个消息新添加的监听者,应该在当前队列消息派发完后再派发,因此,添加一个待添加队列

private static listener2add: Array<NotifyListenerInfo> = [];

在添加监听者时做以下判断

// 该消息正在派发,放入待添加队列if (NotifyCenter.notifyMsgs.indexOf(msg) >= 0) {    NotifyCenter.listener2add.push(info);    return;}

同样在移除监听者时,可能正在派发消息,避免对队列的修改导致for循环异常,添加一个待移除队列,派发消息时,如果该监听者在移除队列则不派发。在消息派发完后再将其移出队列

private static listener2remove: Array<NotifyListenerInfo> = [];

在移除监听者时做以下判断

// 该消息正在派发,放入待移除队列if (NotifyCenter.notifyMsgs.indexOf(msg) >= 0) {    NotifyCenter.listener2remove.push(list[i]);} else {    list.splice(i, 1);}

派发消息时遍历指定消息下的队列

// 队列不存在,不需要处理let list = NotifyCenter.msg2listDict.get(msg);if (!list) {    return;} // 标记消息正在派发,多个消息可能同时在派发,同一消息可能标记多次NotifyCenter.notifyMsgs.push(msg); // 处理消息派发for (let i = 0, n = list.length; i < n; i++) {    NotifyCenter._dispatch(list[i], src, data, false);}

派发消息时先判断是否在移除队列

// 在移除队列,不派发if (NotifyCenter.listener2remove.indexOf(info) >= 0) {    return;}

当前队列派发完后检查待添加队列

// 处理待添加队列派发for (let i = 0, n = msg2add.length; i < n; i++) {    if (listener2add[i].msg == msg) {        NotifyCenter._dispatch(listener2add[i], src, data, true);    }}

关于“CocosCreator消息分发机制的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: CocosCreator消息分发机制的示例分析

本文链接: https://www.lsjlt.com/news/271104.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CocosCreator消息分发机制的示例分析
    这篇文章将为大家详细讲解有关CocosCreator消息分发机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述本篇开始介绍游戏业务架构相关的内容。在游戏业务层,所有需要隔离的系统和模块间通信...
    99+
    2023-06-14
  • 详解CocosCreator消息分发机制
    概述 本篇开始介绍游戏业务架构相关的内容。在游戏业务层,所有需要隔离的系统和模块间通信都可以通过消息分发解耦。例如网络返回通知、数据更新同步到界面等。 消息分发基于观察者模式设计。需...
    99+
    2022-11-12
  • HTML5中页面消息传输机制的示例分析
    这篇文章主要介绍HTML5中页面消息传输机制的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!HTML5 的Message API能够让HTML5页面之间传递消息,甚至这些页面...
    99+
    2022-10-19
  • Session消失机制的示例分析
    小编给大家分享一下Session消失机制的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!以前一直以为cookie就是一直保存在客户端的会话信息,而session是保存在服务器断的会话信息,浏览器关闭以后就会被清除发...
    99+
    2023-06-27
  • Android中消息机制分析
    本文中的源码基于Android 29; 一、概述 对于Android开发者而言,我们处理异步消息用的最多的也是轻车熟路的一种方式,就是使用Handler进行消息的分发和处理。但...
    99+
    2022-06-06
    消息机制 Android
  • Android Handler消息机制分析
    目录Handler是什么?Handler 的基本使用用法一:通过 send 方法用法二:通过 post 方法Handler 类MessageQueue 类Looper 类Handle...
    99+
    2022-11-12
  • Android编程之消息机制实例分析
    本文实例讲述了Android编程之消息机制。分享给大家供大家参考,具体如下: 一、角色描述 1.Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Mes...
    99+
    2022-06-06
    程之 消息机制 Android
  • Spring Cloud Bus消息的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud Bus消息的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念我们使用配置中心时,当配置中心的配置发生了变化,我们就要发送一个post请求给客...
    99+
    2023-06-25
  • RocketMQ事务消息的示例分析
    小编给大家分享一下RocketMQ事务消息的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、大事务 = 小事务 + 异步我们以一个转帐的场景为例来说明这...
    99+
    2023-06-04
  • Android Handler消息派发机制源码分析
    注:这里只是说一下sendmessage的一个过程,post就类似的 如果我们需要发送消息,会调用sendMessage方法 public final boolean s...
    99+
    2022-06-06
    handler 源码 Android
  • Android事件分发机制示例分析
    Android事件类型 public boolean onTouchEvent(MotionEvent event) { switch (event.getActio...
    99+
    2022-11-13
  • 源码分析Android的消息机制
    一、引言 ​Android消息机制主要指的是Handler的运行机制,是一块很有意思,也很有研究意义的内容。本文计划在较短的篇幅内,通过一定的源...
    99+
    2022-06-06
    消息机制 源码 Android
  • Android消息机制原理深入分析
    目录1.消息机制原理的解释2.Android的消息机制概述Handler的背景(三个常见问题)Handler的工作原理的解释3.消息机制的分析1.了解Message2.了解Handl...
    99+
    2022-12-09
    Android消息机制 Android消息处理机制
  • 从源码角度分析Android的消息机制
    目录前言ThreadLocal的工作原理Looper的工作原理Handler的工作原理总结参考资料前言 说到Android的消息机制,那么主要的就是指的Handler的运行机制。其...
    99+
    2022-11-12
  • kafka的消息存储机制和原理分析
    目录消息的保存路径数据分片log分段日志和索引文件内容分析在 partition 中通过 offset 查找 message过程日志的清除策略以及压缩策略日志的清理策略有两个日志压缩...
    99+
    2022-11-13
  • MySQL锁机制的示例分析
    这篇文章主要介绍了MySQL锁机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。锁在MySQL中是非常重要的一部分,锁对MySQL...
    99+
    2022-10-18
  • CocosCreator新资源管理系统的示例分析
    小编给大家分享一下CocosCreator新资源管理系统的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.资源与构建1.1 creator资源文件基础在...
    99+
    2023-06-14
  • Koa2微信公众号开发之消息管理的示例分析
    这篇文章将为大家详细讲解有关Koa2微信公众号开发之消息管理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。接收消息当普通微信用户向公众账号发消息时,微信服务器将...
    99+
    2022-10-19
  • RocketMQ消息重试机制原理分析讲解
    目录一、概述二、生产端的消息重试三、消费端的消息重试四、消息重试次数五、消息重试配置六、消息重试原理一、概述 由于网络抖动、服务宕机等一些不确定的因素,RocketMQ在发送消息的时...
    99+
    2023-02-13
    RocketMQ消息重试机制 RocketMQ消息重试
  • Disruptor高性能线程消息传递并发框架的示例分析
    这篇文章主要介绍了Disruptor高性能线程消息传递并发框架的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言碎语Disruptor是英国LMAX公司开源的高性能...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作