• lua使用cocos2dx中的函数


    在lua中调用cocos2d-x函数 需在lua中注册声明 才可在项目中调用Lua文件避免出现nil

    下面是我的实例说明,我要加的是CCControlSlider,其实很简单,首先我们找到Luacocos2d.cpp,

    仔细看看,里面已经有很多类都已经注册声明,我们何不就仿照他们已有的,一一添加注册声明。

    在Luacocos2d.cpp中的 tolua_reg_types函数中加入:

    tolua_usertype(tolua_S,"CCControlSlider");

    在Luacocos2d.cpp中的 tolua_Cocos2d_open函数中打开我们的CCControlSlider并声明CCControlSlider类中我们要用到的函数create,

    要加CCControlSlider类其他的函数也是此法,我这里只举其中一个create函数:

      tolua_cclass(tolua_S,"CCControlSlider","CCControlSlider","",NULL);
      tolua_beginmodule(tolua_S,"CCControlSlider");
       tolua_function(tolua_S,"create",tolua_Cocos2d_CCControlSlider_create00);
      tolua_endmodule(tolua_S);


    好了,create函数的声明就写好了,记得下面要添加 “create” 对应的tolua_Cocos2d_CCControlSlider_create00函数实现,就在Luacocos2d.cpp这个类中添加咯:

    /* method: create of class  CCControlSlider */
    #ifndef TOLUA_DISABLE_tolua_Cocos2d_CCControlSlider_create00
    static int tolua_Cocos2d_CCControlSlider_create00(lua_State* tolua_S)
    {
    #ifndef TOLUA_RELEASE
     tolua_Error tolua_err;
     if (
         !tolua_isusertable(tolua_S,1,"CCControlSlider",0,&tolua_err) ||
         !tolua_isstring(tolua_S,2,0,&tolua_err) ||
         !tolua_isstring(tolua_S,3,0,&tolua_err) ||
         !tolua_isstring(tolua_S,4,0,&tolua_err) ||
         !tolua_isnoobj(tolua_S,5,&tolua_err)
     )
      goto tolua_lerror;
     else
    #endif
     {
      const char* normalSlider = ((const char*)  tolua_tostring(tolua_S,2,0));
      const char* selectedSlider = ((const char*)  tolua_tostring(tolua_S,3,0));
      const char* disabledSlider = ((const char*)  tolua_tostring(tolua_S,4,0));
      {
       CCControlSlider* tolua_ret = (CCControlSlider*)  CCControlSlider::create(normalSlider,selectedSlider,disabledSlider);
        int nID = (tolua_ret) ? (int)tolua_ret->m_uID : -1;
        int* pLuaID = (tolua_ret) ? &tolua_ret->m_nLuaID : NULL;
        toluafix_pushusertype_ccobject(tolua_S, nID, pLuaID, (void*)tolua_ret,"CCControlSlider");
      }
     }
     return 1;
    #ifndef TOLUA_RELEASE
     tolua_lerror:
     tolua_error(tolua_S,"#ferror in function 'create'.",&tolua_err);
     return 0;
    #endif
    }
    #endif //#ifndef TOLUA_DISABLE

    这样就O啦,我们可以在Lua中用到cocos2d-x下的CCControlSlider类中的create,只是create哦,如果你还想用到CCControlSlider类中更多的函数,就按上面的去做就OK了。

  • 相关阅读:
    【MVC】过滤器
    【C#】开发可以可视化操作的windows服务
    【JS】导出table到excel,同时兼容FF和IE
    【.Net】文件并发(日志处理)--队列--Redis+Log4Net
    【.Net】从.NET平台调用Win32 API
    『录』最全前端资源汇集
    $.ajax()方法详解
    mvc的视图中显示DataTable的方法
    C# 对XML基本操作总结
    Ninject简介
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3047846.html
Copyright © 2020-2023  润新知