当前位置:首页 > 开发 > 移动开发 > 正文

ios开发中使用cocos2dx、lua和protobuf

发表于: 2014-08-05   作者:aigo   来源:转载   浏览次数:
摘要:  原文:http://www.cnblogs.com/hanframe/p/3582832.html   为了使游戏开发更加方便快捷,我继续了protobuf在lua下的尝试。 socket使用的是cocos2dx集成的websocket。   先说下环境:cocos2d-x-2.2.1 + protobuf 2.5.0 + protoc-gen-lua +

 原文:http://www.cnblogs.com/hanframe/p/3582832.html

 

为了使游戏开发更加方便快捷,我继续了protobuf在lua下的尝试。

socket使用的是cocos2dx集成的websocket。

 

先说下环境:cocos2d-x-2.2.1 + protobuf 2.5.0 + protoc-gen-lua + Python 2.7.5

 

1.在protobuf目录下依次执行如下命令

python setup.py build  
python setup.py install  

 

 

2.在protoc-gen-lua目录下的plugin目录中新建protoc-gen-lua.bat文件,并将如下内容粘贴到里面

@python <你的目录>\protoc-gen-lua\plugin\protoc-gen-lua  

 

 

3.生成protobuf对应的lua文件,执行如下命令:

<你的路径>/protoc.exe --lua_out=./ --plugin=protoc-gen-lua="<你的路径>\protoc-gen-lua\plugin\protoc-gen-lua.bat" test.proto  

 

执行完后就会生成test_pb.lua文件。

 

4.使用cocos2dx的create_project.py创建lua工程;

 

5.将protoc-gen-lua/protobuf目录下的pb.c文件复制到lua工程的Classes目录下,并加入到C++工程中;

 

6.将protoc-gen-lua/protobuf目录下的所有lua文件复制到lua工程的Resources目录下;

 

7.编辑AppDelegate.cpp文件,添加如下代码:

extern "C"{    
#include <lua.h>    
#include <lualib.h>    
#include <lauxlib.h>    
    int luaopen_pb (lua_State *L);    
}  

 

 

8.在AppDelegate::applicationDidFinishLaunching()方法中加入初始化方法:

luaopen_pb(tolua_s);  

 

 

9.此时对lua工程进行编译,如果出错,请检查并修正;编译通过,并且可以正常运行后继续下面的步骤;

 

10.cocos2dx默认产生的lua工程包含2个文件hello.lua与hello2.lua,打开hello2.lua,将如下内容添加到文件末尾(因为我使用的是websocket,各位可根据自己的实际情况进行修改):

local wsProtobuf=nil  
function testProtobuf()  
    wsProtobuf = WebSocket:create("ws://localhost:8080/web")  
    local function onOpen(strData)  
        print("socket open ...")  
        require "test_pb"  
        local msg=test_pb.Message()  
        msg.id=101        
        local person =test_pb.Person()  
        person.id=111  
        person.name="user1"  
        person.email="a1@a.a"  
        msg.data=person:SerializeToString()  
        local pb_data = msg:SerializeToString()  
        local t={string.byte(pb_data,1,-1)}  
        wsProtobuf:sendBinaryMsg(t,table.getn(t))  
    end  
    local function onMessage(strData)  
        print("socket message ...")  
    end  
    local function onClose(strData)  
        print("socket close ...")  
    end  
    local function onError(strData)  
        print("socket error")  
    end  
      
    if nil ~= wsProtobuf then  
        wsProtobuf:registerScriptHandler(onOpen,kWebSocketScriptHandlerOpen)  
        wsProtobuf:registerScriptHandler(onMessage,kWebSocketScriptHandlerMessage)  
        wsProtobuf:registerScriptHandler(onClose,kWebSocketScriptHandlerClose)  
        wsProtobuf:registerScriptHandler(onError,kWebSocketScriptHandlerError)  
    end   
end  

 

 

11.然后在hello.lua中调用testProtobuf()函数即可。

 

测试运行,你可以在服务器端查看收到的消息。

ios开发中使用cocos2dx、lua和protobuf

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
转发,请保持地址:http://blog.csdn.net/stalendp/article/details/8920018 在cocos2dx中使用lua进
转发,请保持地址: http://blog.csdn.net/stalendp/article/details/9154485 由于cocosBuilder几乎
仿照“我叫MT”的控件 代码如下: local function createBanner() local layerFarm = CCNode:create
本站文章均为李华明Himi原创,转载务必在明显处注明: 转载自【黑米GameDev街区】原文链接:http://ww
本站文章均为李华明Himi原创,转载务必在明显处注明: 转载自【黑米GameDev街区】原文链接:http://ww
自:http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行
【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏
原文链接(http://blog.csdn.net/feng283797821/article/details/9815849) 编辑器用sublime text 2
Lua 是很容易移植到ios上的脚本语言。很多软件都实现了把lua移植到ios上,有一个软件叫“lua5.1.4-
【Cocos2dX(2.x)_Lua开发之三】在Lua中使用自定义精灵(Lua脚本与自创建类之间的访问)及Lua基础讲解
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号