Cocos2d-x之回调Lua的函数
一、编写注册函数
1.1 创建LuaHandler.h,方便其实控件增加该功能。
#ifndef __LUAHANDLER_H__ #define __LUAHANDLER_H__#include "CCLuaEngine.h"class LuaHandler {public:LuaHandler(): m_nLuaHandler(0){}virtual ~LuaHandler(){}// 注册Lua回调函数virtual void registerLuaHandler(int nHandler){unregisterLuaHandler();m_nLuaHandler = nHandler;LUALOG("[LUA] Add lua handler: %d", m_nLuaHandler);}// 取消注册virtual void unregisterLuaHandler(void){if (m_nLuaHandler != 0){cocos2d::CCScriptEngineManager::sharedManager()->getScriptEngine()->removeScriptHandler(m_nLuaHandler);m_nLuaHandler = 0;LUALOG("[LUA] Remove lua handler: %d", m_nLuaHandler);}}// 获取在Lua中注册的Lua回调函数引用int getLuaHandler() { return m_nLuaHandler; };// 获取Lua的堆,方法调用各种函数cocos2d::CCLuaStack *getLuaStack(void) {cocos2d::CCLuaEngine *pEngine = (cocos2d::CCLuaEngine*)(cocos2d::CCScriptEngineManager::sharedManager()->getScriptEngine());return pEngine->getLuaStack();} protected:int m_nLuaHandler; };#endif
1.2 使用LuaHandler.h
#include "LuaHandler.h"class MyLayer: public CCLayer, public LuaHandler {public:// ... 省略void callback(void){int mHandler = getLuaHandler();if (mHandler != 0){CCLuaStack *pStack = getLuaStack();pStack->pushInt(1234); // 回调函数第一个参数pStack->pushString("abc"); // 回调函数第二个参数pStack->executeFunctionByHandler(mHandler, 2); // 2表示回调函数有两个参数}} };
1.3 创建MyLayer.pkg
class MyLayer: public CCLayer {// ... 省略void registerLuaHandler(LUA_FUNCTION mHandler);void unregisterLuaHandler(void); };
二、在Lua中注册回调函数
local function callback(f, t)cclog("第一个参数:" .. f .. ",第二个参数:" .. t) endlocal myLayer = MyLayer:create() myLayer:registerLuaHandler(callback) -- 注册回调函数 myLayer:unregisterLuaHandler() -- 取消注册
Cocos2d-x之回调Lua的函数相关推荐
- LuaForUnity4:Lua的函数
一.Lua的函数 代码中有注释 一些重点: Lua的函数可以返回多个结果,你可以将它们赋值给数组 function 函数名(...):函数传入可变参数 select("#", .. ...
- 笨木头Lua专栏 函数的几个特别之处
[笨木头Lua专栏]基础补充02: [木头Cocos2d-x 029]Lua篇(第04章):来点高难度的,获取Lua表结构数据 只是获取一个全局变量什么的太没意思了,今天我们来玩个高难度的--获取Lu ...
- Lua的函数参数为table时奇特现象
前言 今天在工作中使用lua编写代码时发生了一个有趣的现象,特此记录一下. 问题再现 当lua的函数为table时会发生什么情况,话不多说直接上代码: local tb = {1, 2, 3}func ...
- lua sleep函数实现
一个不幸的消息是Lua中没有内置sleep函数,我们需要DIY.有4种方法可以实现sleep函数,如下: 方法1 --在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源,强烈不推荐使用 ...
- 支持回调处理 php函数,PHP支持回调的函数有哪些
PHP支持回调的函数有哪些 PHP支持回调的函数有:1.匿名函数,代码为[$server->on 'Request']:2.类静态方法,代码为[static function test $req ...
- 支持回调处理 php函数,PHP支持回调的函数有哪些?
PHP支持回调的函数有:1.匿名函数,代码为[$server->on 'Request']:2.类静态方法,代码为[static function test $req]:3.函数,代码为[my_ ...
- 回调、匿名函数、闭包
匿名函数:简单来说就是无函数名的函数. 基本写法: // 用()包起来,没有会语法报错: (function (){alert(1); })// 如果需要运行,() ,则自调用: (function ...
- react 子组件回调父组件函数
其实就是父组件将父组件的函数(key:changeState,value:goToBPMS函数)传递给子组件,子组件从props中调用key为changeState的函数,父组件的goToBPMS函数 ...
- lua服务器客户端消息回调,lua服务器客户端消息回调
lua服务器客户端消息回调 内容精选 换一换 介绍使用同一VPC内弹性云服务器ECS上的phpredis连接Redis的方法.更多的客户端的使用方法请参考Redis客户端.本章节操作,仅适用于连接单机 ...
最新文章
- 【每日一算法】最后一个单词的长度
- 英语四级比计算机等级难多少,英语四级难考吗?学长:掌握方法,过“425”分不困难...
- Java 学习之网络编程案例
- js-移动端android浏览器中input框被软键盘遮住的问题解决方案
- 《城市建筑美学》读书笔记
- javascript读取txt_JavaScript编程语言学习笔记——编程
- Angular2中的路由(简单总结)
- mysql l日志分析,MySQL的截取与分析日志文件
- 虚拟化精华问答 | 虚拟化的关键技术有哪些?
- 对java中接口的简单理解
- Windows7与苹果雪豹的绝版PK
- 算法设计方法之 贪婪算法
- 视觉slam第一讲——
- perl CGI::Session
- 矩池云上编译安装dlib库
- 使用 Autofill 插件快速提交BUG
- 7塞班贝拉系统下载_远观JAVA,近观鸿蒙,盘点那些年我们用过的手机系统
- 《2019-2020中国开发者调查报告》发布了!
- 计算机虚拟化技术试题,虚拟现实技术考试题及答案.doc
- 问:平面布置图是什么?有什么作用?如何判断好的平面布置图方案?如何绘制?
热门文章
- 构建属于自己的vue-ui组件库
- 20.RabbitMQ 用户权限Virtual Hosts
- python软件运行界面_python运行界面 python的图形用户界面怎么运行
- “战疫杯”大学生程序设计在线邀请赛(2)
- 求生之路2 DIY-自制皮肤与导入
- Java中取余(%)运算规则
- c语言while的作用范围,C语言中While语句使用规则
- 库存转换是什么意思_供应链管理丨仓库货物管理为什么要先进先出?
- C++之二叉树的序列化与反序列化
- Java8: @Repeatable注解原理和使用技巧