一、编写注册函数

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的函数相关推荐

  1. LuaForUnity4:Lua的函数

    一.Lua的函数 代码中有注释 一些重点: Lua的函数可以返回多个结果,你可以将它们赋值给数组 function 函数名(...):函数传入可变参数 select("#", .. ...

  2. 笨木头Lua专栏 函数的几个特别之处

    [笨木头Lua专栏]基础补充02: [木头Cocos2d-x 029]Lua篇(第04章):来点高难度的,获取Lua表结构数据 只是获取一个全局变量什么的太没意思了,今天我们来玩个高难度的--获取Lu ...

  3. Lua的函数参数为table时奇特现象

    前言 今天在工作中使用lua编写代码时发生了一个有趣的现象,特此记录一下. 问题再现 当lua的函数为table时会发生什么情况,话不多说直接上代码: local tb = {1, 2, 3}func ...

  4. lua sleep函数实现

    一个不幸的消息是Lua中没有内置sleep函数,我们需要DIY.有4种方法可以实现sleep函数,如下: 方法1 --在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源,强烈不推荐使用 ...

  5. 支持回调处理 php函数,PHP支持回调的函数有哪些

    PHP支持回调的函数有哪些 PHP支持回调的函数有:1.匿名函数,代码为[$server->on 'Request']:2.类静态方法,代码为[static function test $req ...

  6. 支持回调处理 php函数,PHP支持回调的函数有哪些?

    PHP支持回调的函数有:1.匿名函数,代码为[$server->on 'Request']:2.类静态方法,代码为[static function test $req]:3.函数,代码为[my_ ...

  7. 回调、匿名函数、闭包

    匿名函数:简单来说就是无函数名的函数. 基本写法: // 用()包起来,没有会语法报错: (function (){alert(1); })// 如果需要运行,() ,则自调用: (function ...

  8. react 子组件回调父组件函数

    其实就是父组件将父组件的函数(key:changeState,value:goToBPMS函数)传递给子组件,子组件从props中调用key为changeState的函数,父组件的goToBPMS函数 ...

  9. lua服务器客户端消息回调,lua服务器客户端消息回调

    lua服务器客户端消息回调 内容精选 换一换 介绍使用同一VPC内弹性云服务器ECS上的phpredis连接Redis的方法.更多的客户端的使用方法请参考Redis客户端.本章节操作,仅适用于连接单机 ...

最新文章

  1. 【每日一算法】最后一个单词的长度
  2. 英语四级比计算机等级难多少,英语四级难考吗?学长:掌握方法,过“425”分不困难...
  3. Java 学习之网络编程案例
  4. js-移动端android浏览器中input框被软键盘遮住的问题解决方案
  5. 《城市建筑美学》读书笔记
  6. javascript读取txt_JavaScript编程语言学习笔记——编程
  7. Angular2中的路由(简单总结)
  8. mysql l日志分析,MySQL的截取与分析日志文件
  9. 虚拟化精华问答 | 虚拟化的关键技术有哪些?
  10. 对java中接口的简单理解
  11. Windows7与苹果雪豹的绝版PK
  12. 算法设计方法之 贪婪算法
  13. 视觉slam第一讲——
  14. perl CGI::Session
  15. 矩池云上编译安装dlib库
  16. 使用 Autofill 插件快速提交BUG
  17. 7塞班贝拉系统下载_远观JAVA,近观鸿蒙,盘点那些年我们用过的手机系统
  18. 《2019-2020中国开发者调查报告》发布了!
  19. 计算机虚拟化技术试题,虚拟现实技术考试题及答案.doc
  20. 问:平面布置图是什么?有什么作用?如何判断好的平面布置图方案?如何绘制?

热门文章

  1. 构建属于自己的vue-ui组件库
  2. 20.RabbitMQ 用户权限Virtual Hosts
  3. python软件运行界面_python运行界面 python的图形用户界面怎么运行
  4. “战疫杯”大学生程序设计在线邀请赛(2)
  5. 求生之路2 DIY-自制皮肤与导入
  6. Java中取余(%)运算规则
  7. c语言while的作用范围,C语言中While语句使用规则
  8. 库存转换是什么意思_供应链管理丨仓库货物管理为什么要先进先出?
  9. C++之二叉树的序列化与反序列化
  10. Java8: @Repeatable注解原理和使用技巧