1. 程式人生 > >toLua消息監聽和發送(LuaframeWork)

toLua消息監聽和發送(LuaframeWork)

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)