• 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会直接崩,而不会显示错误。

    最后,我想告诉大家,这个消息系统不推荐使用,因为报错不会告诉你,下图告诉了你们,这个是蒙哥的回复。。

  • 相关阅读:
    写在寒假
    Docker安装Redis(两种方式)
    JVM类加载机制
    RabbitMQ学习
    MySQL索引详解
    Java内存区域
    Window10下的Docker Desktop安装(保姆级教程)
    JVM垃圾回收
    力扣Hot100(目前进度89/100)
    C# 发送邮件实例
  • 原文地址:https://www.cnblogs.com/vsirWaiter/p/7584316.html
Copyright © 2020-2023  润新知