tolua_function(tolua_S,“create”,tolua_Cocos2d_CCLabelTTF_create00);
/* method: create of class CCLabelTTF /
#ifndef TOLUA_DISABLE_tolua_Cocos2d_CCLabelTTF_create00
static int tolua_Cocos2d_CCLabelTTF_create00(lua_State tolua_S)
{
#ifndef TOLUA_RELEASE
tolua_Error tolua_err;
if (
!tolua_isusertable(tolua_S,1,“CCLabelTTF”,0,&tolua_err) ||
!tolua_isstring(tolua_S,2,0,&tolua_err) ||
!tolua_isstring(tolua_S,3,0,&tolua_err) ||
!tolua_isnumber(tolua_S,4,0,&tolua_err) ||
(tolua_isvaluenil(tolua_S,5,&tolua_err) || !tolua_isusertype(tolua_S,5,“const CCSize”,0,&tolua_err)) ||
!tolua_isnumber(tolua_S,6,0,&tolua_err) ||
!tolua_isnumber(tolua_S,7,0,&tolua_err) ||
!tolua_isnoobj(tolua_S,8,&tolua_err)
)
goto tolua_lerror;
else
#endif
{
const char* str = ((const char*) tolua_tostring(tolua_S,2,0));
const char* fontName = ((const char*) tolua_tostring(tolua_S,3,0));
float fontSize = ((float) tolua_tonumber(tolua_S,4,0));
const CCSize* dimensions = ((const CCSize*) tolua_tousertype(tolua_S,5,0));
CCTextAlignment hAlignment = ((CCTextAlignment) (int) tolua_tonumber(tolua_S,6,0));
CCVerticalTextAlignment vAlignment = ((CCVerticalTextAlignment) (int) tolua_tonumber(tolua_S,7,0));
{
CCLabelTTF* tolua_ret = (CCLabelTTF*) CCLabelTTF::create(str,fontName,fontSize,dimensions,hAlignment,vAlignment);
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,“CCLabelTTF”);
}
}
return 1;
#ifndef TOLUA_RELEASE
tolua_lerror:
tolua_error(tolua_S,"#ferror in function ‘create’.",&tolua_err);
return 0;
#endif
}
#endif //#ifndef TOLUA_DISABLE
以上是CCLabelTTF::create()对应在LuaCocos2d的代码。
问题1:static int tolua_Cocos2d_CCLabelTTF_create00(lua_State* tolua_S),函数传递的是lua_State,而我传递的是str,fontName,fontSize,*dimensions,hAlignment,vAlignment等参数,这些参数是在哪里压栈,保存到lua_state中的。 这一步骤是tolua++实现的【而非cocos2d做的处理】?
问题2:
CCLabelTTF* tolua_ret = (CCLabelTTF*) CCLabelTTF::create(str,fontName,fontSize,dimensions,hAlignment,vAlignment);
int nID = (tolua_ret) ? (int)tolua_ret->m_uID : -1;
int pLuaID = (tolua_ret) ? &tolua_ret->m_nLuaID : NULL;
这里的CCLabelTTF应该就是cocos2d-x C++代码里面的CCLabelTTF了吧? 那么m_uID 和 m_nLuaID 这两个成员变量哪里声明和定义的?
还要是public的…