UnitTest.EventObject
custom_event_manager
EventManager?
event_dispatch
(method) CustomEvent:event_dispatch(event_name: string, ...any)
-> any
2. any
3. any
4. any
发起自定义事件(回执模式),与通知模式不同,允许插入结算。
可以接受到事件的返回值,有多处注册事件时会按照注册顺序调用,
当任何事件回调返回了非 nil
的值后,后续触发器将不再调用。
Obj:event_on('获取', function (trigger,...)
print('获取1')
return 1
end)
Obj:event_on('获取', function (trigger,...)
print('获取2')
return 2
end)
local result = Obj:event_dispatch('获取')
print('结果为:', result)
以上代码会打印:
获取1
结果为: 1
event_dispatch_with_args
(method) CustomEvent:event_dispatch_with_args(event_name: string, args: any, ...any)
-> any
2. any
3. any
4. any
发起带事件参数的自定义事件(回执模式)
event_notify
(method) CustomEvent:event_notify(event_name: string, ...any)
发起自定义事件(通知模式),同一个对象身上只会有一个正在执行的事件, 当发生插入结算时,后面的事件会进入队列
Obj:event_on('获得', function ()
print('触发获得')
print('发起移除前')
Obj:event_notify('移除') -- 实际业务中,可能你获得的buff把你自己杀死了,而死亡会清除buff
print('发起移除后')
end)
Obj:event_on('移除', function ()
print('触发移除')
end)
Obj:event_notify('获得')
这段代码会打印:
触发获得
发起移除前
发起移除后
触发移除
event_notify_with_args
(method) CustomEvent:event_notify_with_args(event_name: string, args: any[], ...any)
发起带事件参数的自定义事件(通知模式)
event_on
(method) CustomEvent:event_on(...any)
-> Trigger
注册自定义事件,当触发时,会执行回调函数。
Obj:event_on('输入', function (trigger, ...)
print('触发了输入事件', ...)
end)
Obj:event_notify('输入', '123', '456')
以上会打印:
触发了输入事件 123 456
注册时可以指定事件的参数:
Obj:event_on('输入', {'123'}, function (trigger, ...)
print('触发了输入事件', ...)
end)
Obj:event_notify('输入', 1) -- 不能触发事件
Obj:event_notify_with_args('输入', {'123'}, 2) -- 可以触发事件
Obj:event_notify_with_args('输入', {'456'}, 3) -- 不能触发事件
Obj:event_notify_with_args('输入', {'123', '666'}, 4) -- 可以触发事件
get_custom_event_manager
(method) CustomEvent:get_custom_event_manager()
-> EventManager?