加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2dx 注册lua回调到c++

发布时间:2020-12-14 21:32:28 所属栏目:百科 来源:网络整理
导读:int Connect::test(int arg) { auto enginge = cocos2d::LuaEngine::getInstance(); auto stack = enginge-getLuaStack(); stack-pushInt(18); stack-pushString("test event"); stack-pushInt(10); stack-executeFunctionByHandler(m_handle,3); stack-clea

int Connect::test(int arg)
    {
        auto enginge = cocos2d::LuaEngine::getInstance();
        auto stack = enginge->getLuaStack();
        stack->pushInt(18);
        stack->pushString("test event");
        stack->pushInt(10);
        
        stack->executeFunctionByHandler(m_handle,3);
        stack->clean();
        return 0;
    }
    
    int Connect::registerEventHandle(int handle)
    {
        m_handle = handle;
        return 0;
    }

int lua_ray_network_Connect_registerEventHandle(lua_State* tolua_S)
{
    int argc = 0;
    RaySocket::Connect* cobj = nullptr;
//    bool ok  = true;

#if COCOS2D_DEBUG >= 1
    tolua_Error tolua_err;
#endif


#if COCOS2D_DEBUG >= 1
    if (!tolua_isusertype(tolua_S,1,"RaySocket.Connect",&tolua_err)) goto tolua_lerror;
#endif

    cobj = (RaySocket::Connect*)tolua_tousertype(tolua_S,0);

#if COCOS2D_DEBUG >= 1
    if (!cobj) 
    {
        tolua_error(tolua_S,"invalid 'cobj' in function 'lua_ray_network_Connect_registerEventHandle'",nullptr);
        return 0;
    }
#endif

    argc = lua_gettop(tolua_S)-1;
    if (argc == 1) 
    {
//        int arg0;

        // ok &= luaval_to_int32(tolua_S,2,(int *)&arg0,"RaySocket.Connect:registerEventHandle");
        // if(!ok)
        // {
        //     tolua_error(tolua_S,"invalid arguments in function 'lua_ray_network_Connect_registerEventHandle'",nullptr);
        //     return 0;
        // }
//      need modify
        int handler = (toluafix_ref_function(tolua_S,0));
        int ret = cobj->registerEventHandle(handler);
//      need modify
        tolua_pushnumber(tolua_S,(lua_Number)ret);
        return 1;
    }
    luaL_error(tolua_S,"%s has wrong number of arguments: %d,was expecting %d n","RaySocket.Connect:registerEventHandle",argc,1);
    return 0;

#if COCOS2D_DEBUG >= 1
    tolua_lerror:
    tolua_error(tolua_S,"#ferror in function 'lua_ray_network_Connect_registerEventHandle'.",&tolua_err);
#endif

    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读