基于uLua/toLua的Luaframework的lua框架的事件系统
github地址:https://github.com/jarjin/LuaFramework_NGUI
Luaframework为了我写好了消息的监听和发送,也就是观察者模式的使用方式。
如下图:
eventlib是消息处理的一个库。
enents是作者为使我们更方便,仿造的C#的消息模式。
我们去调用这个事件系统的使用方式如下:
local EventTest = require "events" function Main() print("logic start") EventTest.AddListener("1",EvenetTest) EventTest.Brocast("1",2,3) end function EvenetTest(f1,f2,f3) print(f1) --2 print(f2) --3 print(f3) --nil print("我执行了事件") end
我们实际上是使用的events里面的Event这个表。
注意点:
1、require后面是跟的文件名“events”,如果require "Event"的话,会告诉你返回的是一个bool类型的值,就无法由我们去使用了。
2、传递的事件的协议号,也就是上述代码EventTest.AddListener中的参数1,这个必须为string类型,因为这是luaframework定义好了,我们可以去修改,但是基于框架的东西尽量不要去修改吧,所以我们还是按照作者的思路去使用string类型的值作为消息传递的协议号。
3、消息发送的参数,可以与执行的方法的参数不一致,如果你如上述代码代码传递2和3两个参数,则方法执行时f1、f2分别对应2、3,f3的值则为nil。
时间: 2024-10-12 05:17:44