cocos2dx 2.0.4 - lua 添加自定义类

主要来源于 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_createHSrpite00
static 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 的吧...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值