随风逐叶 随风逐叶
首页
  • Quick Reference (opens new window)
  • EgretEngine开发者文档 (opens new window)
  • TinaX框架
  • SSH教程
  • VSCode插件开发
关于
  • 分类
  • 标签
  • 归档

rontian

从事游戏开发10多年的老菜鸟一枚!
首页
  • Quick Reference (opens new window)
  • EgretEngine开发者文档 (opens new window)
  • TinaX框架
  • SSH教程
  • VSCode插件开发
关于
  • 分类
  • 标签
  • 归档
  • 框架简介
  • TinaX.Core
  • 基于TinaX创建一个扩展库
  • TinaX.VFS
  • TinaX.UIKit
  • TinaX.I18N
  • TinaX.Lua
  • XLua

  • Google.Protobuf
  • Lua-Protobuf
  • 一些优秀的第三方库

    • CatLib

      • 简介
      • 风格指南
      • 常见问题
      • 已知BUG
      • 更新日志
      • 服务提供者
      • 应用程序
      • 服务容器
      • 服务门面
      • 事件系统
        • 名词定义
        • 注册普通监听器
        • 触发事件
        • 判断监听器是否存在
        • 终止事件传递
        • 解除事件监听
          • 解除事件下全部监听器
      • 数组
      • 字符串
      • 守卫
      • 有序集
      • 环形缓冲流
      • 包装流
      • 组合流
      • 分片流
    • UniRx

    • UniTask

目录

事件系统

# 事件系统

事件机制是一种很好的应用解耦方式。CatLib事件系统让我们可以订阅和监听程序中出现的各种事件。

应用程序已经默认提供了事件系统,供给全局事件使用。如果您要定义私有范围的事件可以这么做:

var dispatcher = new EventDispatcher();
1

# 名词定义

  • 载荷是指程序调用所附带的上下文信息。不同的调用者所提供的上下文信息各不相同。

# 注册普通监听器

通过 AddListener 命令您可以注册一个事件的监听器。

dispatcher.AddListener("event.name", (EventArgs args) =>
{
    //todo
});
1
2
3
4

# 触发事件

如果要触发事件,您可以通过Raise来触发事件。这个函数将会把事件分发到它所有已经注册的监听器上。

dispatcher.Raise("event.name", userParams);
1

# 判断监听器是否存在

您可以通过HasListener来判断事件监听器是否存在。

dispatcher.HasListener("event.name");
1

# 终止事件传递

CatLib事件系统支持实现一个IStoppableEvent接口来决定是否来终止事件的传递。

public class FooEventArgs : EventArgs, IStoppableEvent
{
    public bool IsPropagationStopped => true;
}
1
2
3
4

# 解除事件监听

您可以通过RemoveListener方法来解除指定的事件监听器。

dispatcher.RemoveListener("event.name", listener);
1

# 解除事件下全部监听器

dispatcher.RemoveListener("event.name");
1
上次更新: 2023/10/17, 17:20:06 访问次数: 0
服务门面
数组

← 服务门面 数组→

最近更新
01
一些Shell常用的功能写法整理
10-20
02
删除git仓库submodule的步骤
10-20
03
django基本命令
10-16
更多文章>
Copyright © 2017-2025 随风逐叶
沪ICP备18008791号-1 | 沪公网安备31011502401077号

网站访问总次数: 0次
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式