文档章节

cocos2dx驱动lua

梦想游戏人
 梦想游戏人
发布于 2017/02/06 10:59
字数 259
阅读 24
收藏 0

附带几篇交互方式

https://my.oschina.net/kkkkkkkkkkkkk/blog/825686

https://my.oschina.net/kkkkkkkkkkkkk/blog/518154

https://my.oschina.net/kkkkkkkkkkkkk/blog/746684

这里针对cocos2dx的实现

1...Scheduler::update 里面直接遍历lua层注册的事件 ,然后派发

#if CC_ENABLE_SCRIPT_BINDING
    //
    // Script callbacks
    //

    // Iterate over all the script callbacks
    if (!_scriptHandlerEntries.empty())
    {
        for (auto i = _scriptHandlerEntries.size() - 1; i >= 0; i--)
        {
            SchedulerScriptHandlerEntry* eachEntry = _scriptHandlerEntries.at(i);
            if (eachEntry->isMarkedForDeletion())
            {
                _scriptHandlerEntries.erase(i);
            }
            else if (!eachEntry->isPaused())
            {
                eachEntry->getTimer()->update(dt);
            }
        }
    }
#endif

 

2.Node 里面的事件

成员变量

#if CC_ENABLE_SCRIPT_BINDING
    int _scriptHandler;               ///< script handler for onEnter() & onExit(), used in Javascript binding and Lua binding.
    int _updateScriptHandler;         ///< script handler for update() callback per frame, which is invoked from lua & javascript.
    ccScriptType _scriptType;         ///< type of script binding, lua or javascript
#endif


// override me
void Node::update(float fDelta)
{
#if CC_ENABLE_SCRIPT_BINDING
    if (0 != _updateScriptHandler)
    {//派发事件消息到lua
        //only lua use
        SchedulerScriptData data(_updateScriptHandler,fDelta);
        ScriptEvent event(kScheduleEvent,&data);
        ScriptEngineManager::getInstance()->getScriptEngine()->sendEvent(&event);
    }
#endif
    
    if (_componentContainer && !_componentContainer->isEmpty())
    {
        _componentContainer->visit(fDelta);
    }
}

 

其他还有很多派发手段,大体思路就是通过ScriptEngine 来派发事件,因为大部分C++类 都通过toLua导出到lua的,导出类自动把lua的handle通过接口ScriptHandlerMgr::getInstance()->addObjectHandler绑定到cpp对象,然后就能相互调用

© 著作权归作者所有

共有 人打赏支持
梦想游戏人
粉丝 37
博文 441
码字总数 125736
作品 0
成都
私信 提问
Quick-Cocos2d-x 3.3 使用WebView

1、编写ini文件。进入frameworks/cocos2d-x/tools/tolua文件夹,可以根据cocos2dxexperimentalvideo.ini编写生产cocos2dxexperimentalwebview.ini,也可以在github(https://github.com/coco......

小房小田
2015/06/11
0
0
VS Code 的 Quick-Cocos2dx 开发插件 - vscode-QuickXDev

vscode-QuickXDev,强大的 Quick-Cocos2dx 开发工具,目前适配 Quick-Cocos2dx-Community 3.7.2 版。 针对 VS Code 的 Quick-Cocos2dx 开发插件,具有诸多特性,方便进行 Quick-Cocos2dx 游戏...

lonewolf
2018/09/03
0
0
杨超 (wantnon)/EffectNodes-for-Cocos2dx

EffectNodes for Cocos2dx by yang chao (wantnon), 2014-6-26 EffectNodes for Cocos2dx is a collection of 2d special effects implemented with cocos2dx. i will add more when i got g......

杨超 (wantnon)
2018/05/09
0
0
cocos2d-x 3.0rc开发指南:Windows下Android环境搭建

Cocos2d-x 3.0rc开发指南:Windows下Android环境搭建 1. 配置JDK JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 本人的系统是Win7 64位版,但安装的是J...

扬名立万
2014/07/09
0
0
cocos2d-x js模版修改

创建cocos2d-x项目,导入引擎模版,避免每次都拷贝引擎到项目中,修改路径: D:commonscocos2d-xcocos2d-2.1rc0-x-2.1.3templatemsvcCCAppWiz.win32Scripts1033下的js文件如下: // Additio...

石头哥哥
2013/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 世界的源代码

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @小鱼丁 :#今日歌曲推荐# 分享Jason Mraz的单曲《Prettiest Friend (Demo)》: 《Prettiest Friend (Demo)》- Jason Mraz 手机党少年们想听歌...

小小编辑
今天
59
5
java框架学习日志-13(Mybatis基本概念和简单的例子)

在mybatis初次学习Mybatis的时候,遇到了很多问题,虽然阿里云的视频有教学,但是视频教学所使用的软件和我自己使用的软件不用,我自己用的数据库是oracle数据库,开发环境是idea。而且视频中...

白话
今天
10
0
Java基础:String、StringBuffer和StringBuilder的区别

1 String String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。 String类的包含如下定义: /** The value is used for character storage. */private final cha...

watermelon11
今天
6
0
mogodb服务

部署MongoDB 官网: https://www.mongodb.com/download-center/community 创建mongo数据目录 mkdir /data/mongodb 二进制部署 wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x8......

以谁为师
昨天
5
0
大神教你Debian GNU/Linux 9.7 “Stretch” Live和安装镜像开放下载

Debian项目团队于昨天发布了Debian GNU/Linux 9 "Stretch" 的第7个维护版本更新,重点修复了APT软件管理器中存在的安全漏洞。在敦促每位用户尽快升级系统的同时,Debian团队还发布了Debian ...

linux-tao
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部