cocos2dx 2.0.4 - lua 添加自定义类

来源:互联网 发布:jquery js时间格式化 编辑:程序博客网 时间:2024/05/19 19:56

主要来源于 Himi 街 http://www.himigame.com/lua-2/985.html, 做了些许修改.


环境:  vs2010 + cocos2d-x 2.0.4  win7


一个继承于 CCSprite 的类 HSprite:

HSprite.h

#ifndef HSprite_h#define HSprite_h#include "cocos2d.h"USING_NS_CC;class HSprite : public CCSprite{public:    static HSprite* createHSprite(const char* name);    void hspriteInit();};#endif

HSprite.cpp

#include "HSprite.h"HSprite* HSprite::createHSprite(const char* name){    HSprite* sp = new HSprite();    if(sp && sp->initWithFile(name)){        sp->hspriteInit();        sp->autorelease();        return sp;    }    CC_SAFE_DELETE(sp);    return NULL;}void HSprite::hspriteInit(){    CCMessageBox("create HSprite success", "ss_Lua");}

LuaCocos2d.h 中添加

#include "HSprite.h"

LuaCocos2d.cpp 中

static void tolua_reg_types (lua_State* tolua_S){    ......    tolua_usertype(tolua_S,"HSprite");}


不要在 tolua_Cocos2d_open 的开头添加, 最好是在末尾添加

TOLUA_API int tolua_Cocos2d_open (lua_State* tolua_S){      ......      tolua_cclass(tolua_S, "HSprite", "HSprite", "CCSprite", NULL);      tolua_beginmodule(tolua_S,"HSprite");        tolua_function(tolua_S,"createHSprite",tolua_ss_HSprite_createHSrpite00);      tolua_endmodule(tolua_S);}

然后在 tolua_Cocos2d_open 的前面定义

/* method: create of class  CCSprite */#ifndef TOLUA_DISABLE_tolua_ss_HSprite_createHSrpite00static int tolua_ss_HSprite_createHSrpite00(lua_State* tolua_S){    tolua_Error tolua_err;    if (        !tolua_isusertable(tolua_S,1,"HSprite",0,&tolua_err) ||        !tolua_isstring(tolua_S,2,0,&tolua_err) ||        !tolua_isnoobj(tolua_S,3,&tolua_err)        )        goto tolua_lerror;    else    {        const char* pszfilename = ((const char*)  tolua_tostring(tolua_S,2,0));        {            HSprite* tolua_ret = (HSprite*)  HSprite::create(pszfilename);            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,"HSprite");        }    }    return 1;tolua_lerror:    return 0;}#endif //#ifndef TOLUA_DISABLE


详细的解释看 Himi 的吧...


原创粉丝点击