从AS转cocos开发,cocos相对与AS傻瓜式的API和大量的资料相比,对遇到问题的新手真是有点绝望.我们项目要做socket通信,cosos-lua的示例里没有socket的,网上找了很多资料,看到可以直接使用local socket = require “socket”,就能发起连接和监听事件,可我项目里这样使用却提示找不到"socket.lua"文件,崩溃中…请教了一些老司机后,发现要设置config.lua里的"CC_DISABLE_GLOBAL = true" 改成"CC_DISABLE_GLOBAL = false"
就可以正常运行了.为什么?搞不懂…好不容易可以连服务器了,后台要求用google的protocol协议.这个没有lua版本的,需要做tolua绑定,尝试了很久,最后找到maomaolong写的文章终于搞定,参考:http://forum.cocos.com/t/quick3-3-pbc-windows/26942/7.到最后一步了socket要发数据必须恶化后台约定好格式,比如要先new一个二进制数组,然后write长度,cmd,body等,但二进制操作有遇到问题了,好像lua不能直接操作二进制数据,网站找了很多资料,没有解决,后来找到zrong大大的"ByteArray.lua"类,这一行require(“pack”)又报错了,不知道是c还是c++的文件,各位大侠知道的麻烦指教一下
自己顶一下,已经解决了,希望对各位有帮助zrong大大的"ByteArray.lua"类:
http://zengrong.net/post/1968.htm
关于lua扩展库lpack的使用指南:
http://www.bubuko.com/infodetail-679867.html
要下载ipack库:
http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/5.1/lpack.tar.gz
ipack.c文件要改一下.
31:#include ctype.h
32:#include string.h
在上面这代码下面插入以下代码,制定按C编译
ifdef __cplusplus
extern “C” {
endif
在最后加上一下代码
ifdef __cplusplus
}
endif
里面有几行类型报错的
59: char a=p;
179: luaL_addlstring(&b,(void)&a,sizeof(a));
190: luaL_addlstring(&b,(void*)&ll,sizeof(ll));
改成下面的:
59: char a= (char)p;
179: luaL_addlstring(&b,(const char*)&a,sizeof(a));
190: luaL_addlstring(&b,const char*)&ll,sizeof(ll));
如果有错误的勿喷啊,希望能帮助到某些人,cocos的资料太少,互相学习
1赞
有个quick社区版,已经帮你集成了很多实用的东西,
当然爱折腾的也可以自己集成。
底层通讯用c++去写,然后发送消息给lua层去调用
可以用 ByteArray处理二进制数组