toLua消息監聽和發送(LuaframeWork)


基於uLua/toLua的Luaframework的lua框架的事件系統

此文所講的消息系統為Luaframework里面自帶的消息系統,由於此功能有一些致命的問題,所以不建議大家使用,下一篇我講一下一個新的消息系統。

新的消息系統內容地址:http://www.cnblogs.com/vsirWaiter/p/7590445.html

github地址:https://github.com/jarjin/LuaFramework_NGUI

Luaframework為了我寫好了消息的監聽和發送,也就是觀察者模式的使用方式。

如下圖:這個是events.lua,並非event.lua

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。

4、重點注意:回調里如果有報錯,lua會直接崩,而不會顯示錯誤。

 

最后,我想告訴大家,這個消息系統不推薦使用,因為報錯不會告訴你,下圖告訴了你們,這個是蒙哥的回復。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM