toLua消息監聽和發送(LuaframeWork)
阿新 • • 發佈:2017-09-24
gui 協議號 ast true 3-9 觀察 分享 highlight int
基於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。
toLua消息監聽和發送(LuaframeWork)