cocos2dx tolua传递参数分析

cocos2dx tolua传递参数分析

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

cocos2dx tolua传递参数分析:
tolua_Cocos2d_CCNode_addChild00  == void CCNode::addChild(CCNode *child)
tolua_Cocos2d_CCNode_addChild01  == void CCNode::addChild(CCNode *child, int zOrder)
tolua_Cocos2d_CCNode_addChild02  == void CCNode::addChild(CCNode *child, int zOrder, int tag)

上面是使用tolua把C++转到lua。上面三个分别相应不同的參数个数。

我们这里分析一下最后一个:/* method: addChild of class CCNode */#ifndef TOLUA_DISABLE_tolua_Cocos2d_CCNode_addChild02static int tolua_Cocos2d_CCNode_addChild02(lua_State* tolua_S){ tolua_Error tolua_err; //这里推断參数是否合法,仅仅能推断參数类型是否合法。假设參数类型检查不通过,就会报错 if ( !tolua_isusertype(tolua_S,1,"CCNode",0,&tolua_err) || !tolua_isusertype(tolua_S,2,"CCNode",0,&tolua_err) || !tolua_isnumber(tolua_S,3,0,&tolua_err) || !tolua_isnumber(tolua_S,4,0,&tolua_err) || !tolua_isnoobj(tolua_S,5,&tolua_err) ) goto tolua_lerror; else { //比如:middleBg:addChild(testSprite, Z_ORDER_1, 200) //我们传递进来的參数和以下的一一相应 //这里能够清楚的看到传入參数的次序,第一是middleBg ... CCNode* self = (CCNode*) tolua_tousertype(tolua_S,1,0); -- middleBg -- 1 CCNode* child = ((CCNode*) tolua_tousertype(tolua_S,2,0)); -- testSprite -- 2 int zOrder = ((int) tolua_tonumber(tolua_S,3,0)); -- Z_ORDER_1 -- 3 int tag = ((int) tolua_tonumber(tolua_S,4,0)); -- 200 -- 4#ifndef TOLUA_RELEASE if (!self) tolua_error(tolua_S,"invalid 'self' in function 'addChild'", NULL);#endif { //这里就把testSprite加到了middleBg self->addChild(child,zOrder,tag); } } return 0;tolua_lerror: return tolua_Cocos2d_CCNode_addChild01(tolua_S);}#endif //#ifndef TOLUA_DISABLE样例://middleBg:addChild(testSprite, Z_ORDER_1, 200) 在传递參数中,我们没有对Z_ORDER_1赋值,即为nil,则就//出现了以下的错误。看下这里argument #3 ,表明是第三个參数错误,而这里我们明明是第二个參数。看下上面的分析//我想大家应该明确了。通过这样的方法,我们以后查找这类问题。就会方便非常多。

03-31 10:09:50.499: D/cocos2d-x debug info(3169): LUA ERROR: [string "xxxxxxxxxxxxx..."]:171: error in function 'addChild'.03-31 10:09:50.499: D/cocos2d-x debug info(3169): argument #3 is 'nil'; '[no object]' expected.03-31 10:09:50.499: D/cocos2d-x debug info(3169): stack traceback:03-31 10:09:50.499: D/cocos2d-x debug info(3169): [C]: in function 'addChild'03-31 10:09:50.499: D/cocos2d-x debug info(3169): [string "xxxxxxxxxxxxx..."]:171: in function 'initMiddle'03-31 10:09:50.499: D/cocos2d-x debug info(3169): [string "xxxxxxxxxxxxx..."]:35: in function 'initUI'03-31 10:09:50.499: D/cocos2d-x debug info(3169): [string "xxxxxxxxxxxxx..."]:27: in function 'ctor'03-31 10:09:50.499: D/cocos2d-x debug info(3169): [string "xxxxxxxxxxxxx"]:34: in function 'create'03-31 10:09:50.499: D/cocos2d-x debug info(3169): [string "xxxxxxxxxxxxx"]:38: in function 'new'03-31 10:09:50.499: D/cocos2d-x debug info(3169): [string "xxxxxxxxxxxxx"]:44: in function 'pushScene'03-31 10:09:50.499: D/cocos2d-x debug info(3169): [string "xxxxxxxxxxxxx"]:309: in function 'callBack'03-31 10:09:50.499: D/cocos2d-x debug info(3169): [string "xxxxxxxxxxxxx"]:653: in function <[string "xxxxxxxxxxxxx"]:651>

版权声明:原创文章,转载请注明出处。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117191.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • html css animate,animate.css

    html css animate,animate.css这是个css3动画框架,现在很流行,在小动画效果有很多,使用的方式/*只要修改bounce这个类就可以*/一、atentionSeekers1、bounce2、flash3、pulse4、rubberBand5、shake6、swing7、tada8、wobble9、jello二、BouncingEntrances1、bounceIn2、bounceInDown3、bounceInLeft4、…

  • int对应的jdbctype_jdbctype null combination

    int对应的jdbctype_jdbctype null combinationjava.sql.Types值Java类型IBMDB2OracleSybaseSQLInformixIBMContentManagerBIGINTjava.lang.longBIGINTNUMBER(38,0)BIGINTBIGINTINT8DK_CM_BIGINTBINARYbyte[]

    2022年10月20日
  • 马赛克还原神器—Depix,真的有那么神吗?「建议收藏」

    马赛克还原神器—Depix,真的有那么神吗?「建议收藏」Depix是用于从马赛克中还原密码/英文数字组合的Python工具。它的官方效果是这样的:效果非常令人惊艳,恢复后基本和原文图相差无几。但是真的有那么神吗?老规矩,需要打包好的软件关注小编,QQ群:721195303领取。01怎么做到的?第一步,作者在编辑器中使用了与原图(带有马赛克的图片)相同的字体设置(文本大小,字体,颜色等设置),然后将debruinseq.txt内的文字和数字放入编辑器中并截图,这张截图中的所有文字都将被像素化后作为“搜索集”来识别原图中马赛克的真实..

  • curl 模拟 GET\POST 请求,以及 curl post 上传文件

    curl 模拟 GET\POST 请求,以及 curl post 上传文件curl模拟GET\POST请求,以及curlpost上传文件一般情况下,我们调试数据接口,都会使用一个postman的工具,但是这个工具还是有点大了。事实上,我们在调试一些小功能的时候,完全没有必要使用它。在命令行中,我们使用curl这个工具,完全可以满足我们轻量的调试要求。下面,我们来简单的说一下,curl的一些常见使用方法:curlGET请求cu…

  • 建立友好城市有什么用_缔结友好城市

    建立友好城市有什么用_缔结友好城市原题连接Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免事故。编程帮助政府做出一些批准和拒绝申请的决定,使得在保证任意两条航线不相交的情况下,被批准的申请尽量多。输入格式第1行,一个整数N,表示城市数。第2行到第n+1行,每行两个整数,中间用1个空格隔开,分别表示南岸和

  • 王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute

    王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号