Lua知识点_高级_c++中调用Lua回调函数

本文介绍了在C++(cocos2dx-3.10)中如何调用Lua的回调函数,以及如何处理多线程场景下可能出现的问题。通过创建一个全局表CallbackTable在Lua中保存回调函数,然后在C++中通过调用`lua_call`执行相应的Lua回调。注意,由于Lua不支持多线程,因此多线程环境下需避免直接调用Lua函数,建议在Lua的update函数中定时调用C++函数获取数据。
摘要由CSDN通过智能技术生成
以下是在cocos2dx-3.10 lua中


1.概述
以下主要用于lua中执行了c++函数,在c++函数执行完成后,调用Lua的回调函数。
注意:若c++中使用了多线程,这里的这种调用Lua的方法会有一定几率导致程序崩溃,因为Lua不支持多线程,
  替代的方法是在Lua的update函数中每隔一定时间就调用c++函数获得相关数据。

2.实例
frameworks
  --runtime-src
    --Classes
      --test.cpp
 --RegisterToLua.cpp
src--
--main.lua
--app
  --views
    --CallbackTable.lua
--hello.lua


(1)创建保存回调函数的全局表
CallbackTable.lua———
CallbackTable = {}
--以Lua函数名字作为key的表,此表的obj元素是一个保存当前脚本this对象、以及最后执行的处理函数的表
CallbackTable.keys = {}
--添加监听
--obj  保存当前脚本this对象
--fun  最后执行的处理函数
--key  在c++中调用的Lua函数
function CallbackTable:listen(obj,fun,key)
    i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值