lua教程八----不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
来源:互联网 发布:java登录界面 数据库 编辑:程序博客网 时间:2024/06/17 14:16
本站文章均为 李华明Himi 原创,转载务必在明显处注明:(作者新浪微博: @李华明Himi )
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/lua1/1314.html
☞ 点击订阅 ☜ 本博客最新动态!及时将最新博文通知您!
利用 cocos2dx-LuaProxy 也可以来实现lua版http功能,具体请移步到:【COCOS2DX-LUA 脚本开发之九】使用cocos2dx-LuaProxy便捷Lua项目快速使用cocos2dx引擎extensions扩展包
Cocos2dx 为我们封装了在cocos2dx中http的网络框架,其文件在cocos2dx引擎包的/Users/Himi/Documents/cocos2d-2.1rc0-x-2.1.2-hotfix/extensions/network 文件下的 HttpClient、HttpRequest 、HttpResponse如下图:
至于如何使用,Himi这里不再详细叙述,大家可以看引擎提供的例子中自己阅读学习(TestCpp项目中)
有童鞋就会问了,既然cocos2dx都已经为我们封装好了,那还讲什么? – -。
嗯,是的,我们可以通过将这几个类通过tolua++工具binding到lua中供我们来使用,但是!一般我们访问服务器时,都希望数据返回时调用我们的一个方法进行对数据的处理,那么使用CCHttpClient 我们可以通过HttpRequest请求包的时候,对其进行设置其回调函数,如下:
inline void setResponseCallback(CCObject* pTarget, SEL_CallFuncND pSelector) { _pTarget = pTarget; _pSelector = pSelector; if (_pTarget) { _pTarget->retain(); } }
大家可以看到此函数需要一个SEL_CallFuncND的参数,而SEL_CallFuncND是个宏定义,并且cocos2dx binding到Lua的LuaCocos2d.cpp 中是没有将SEL_CallFuncND进行binding的。
当然大家如果可以将lua调用setResponseCallback的办法解决,那么则可以直接使用cocos2dx引擎包下的network即可。
另外我们可以通过一些别的办法进行解决,当然以下内容也是我们本篇所要重点介绍的!
首先还是继续介绍下quick-cocos2d-x框架,对于quick-cocos2d-x 其实在之前简单的介绍了,它是一个基于cocos2d-x lua进行扩展的一个框架,使用quick-cocos2d-x 能让使用cocos2dx-lua项目开发者,更快捷的,更方便的开发!
需要注意的是quick-cocos2d-x的Git可下载的zip是不全的,童鞋们需要通过git 来clone下来。500+MB
(Himi与quick-cocos2d-x作者交流中,在下个版本有可能quick-cocos2d-x会嵌入cocos2dx引擎中)
虚的不多说,本篇则是Himi从quick-cocos2d-x 中提取出来的一个Http框架供Lua使用,下面简单介绍下:
(以下对于一些qucik-cocos2d-x中的http的框架封装和如何修改的不做解释,直接介绍如何使用!)
首先下载改版后的c++代码以及Himi对应封装好的pkg文件包 LuaHTTP.zip :
LuaHTTP 下载地址:http://vdisk.weibo.com/s/xg9U0 解压后将HNetWork文件夹并将其加入你们的项目, 解压后如下图:
然后将CCHTTPRequest.pkg 通过cocos2dx 引擎的tolua++ 工具binding到你项目的LuaCocos2d.cpp中(别忘记将这个pkg添加到Cocos2d.pkg中),并且在LuaCocos2d.h中添加:
#include "CCHTTPRequest.h"
然后,让Xcode,Build 下!OK 编译成功!
然后我们在lua中书写测试代码:
--
GET
local url =
"www.baidu.com"
local request =CCHTTPRequest
:createWithUrlLua
(
function(event)
local request = event.request
print(
"state:"
..request
:getState
()..
" code:"
..request
:getResponseStatusCode
())
local parseStr = request
:getResponseString
()
print(parseStr)
end
,
url,
kCCHTTPRequestMethodGET)
request
:start
()
可能大家直接看上面不太清晰,OK,先看对应调用的CCHTTPRequest.h中的createWithUrlLua函数:
static
CCHTTPRequest* createWithUrlLua(LUA_FUNCTION listener,
const
char
* url,
int
method = kCCHTTPRequestMethodGET);
函数第一个参数: lua函数 (用于接受到server数据后的回调用户处理数据)
函数第二个参数: 获取数据的url地址
函数第三个参数: http交互方式 GET or POST ,如下定义:
#define kCCHTTPRequestMethodGET 0
#define kCCHTTPRequestMethodPOST 1
看完以上的理解,那么反回头看lua的那几行测试代码,我想你也该很清楚了!
运行截图:
控制台输出的打印:
ok, 本篇就到这里!有任何问题,请及时留言讨论。
- lua教程八----不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- 【COCOS2DX-LUA 脚本开发之八】不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- 【COCOS2DX-LUA 脚本开发之八】不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- 【COCOS2DX-LUA 脚本开发之八】不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- 【COCOS2DX-LUA 脚本开发之八】使用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- lua QUICK-COCOS2D-X
- lua、quick-cocos2d-x(lua)、lua基本语法、lua类的实现、lua类的继承【新手必读】
- Cocos2d-X 中quick----lua的跳转场景的实现
- quick-cocos2d-x lua中碰撞检测的实现
- quick-cocos2dx cocos2dx.lua
- 【COCOS2DX-LUA 脚本开发之六】利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架
- 【COCOS2DX-LUA 脚本开发之六】利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架
- 【COCOS2DX-LUA 脚本开发之六】利用Lua强转函数解决使用CCNode报错或无法正常使用以及简单介绍 quick-cocos2d-x 与 OpenQuick 两款Lua免费开源框架
- Lua cocos2dx (quick cocos2d x ) Lua调试开发环境搭建资源总结
- 【有用】Lua cocos2dx (quick cocos2d x ) Lua调试开发环境搭建资源总结
- [quick-cocos2d-x lua学习] 框架详细介绍(一)
- lua教程九---使用cocos2dx-LuaProxy便捷Lua项目快速使用cocos2dx引擎extensions扩展包
- cocos2d-x-LuaProxy学习日志(8) -- Lua实现事件派发器
- 10条SQL技巧
- Pick-up sticks
- 自己配置Samba服务器步骤,及碰到的一些问题
- 开灯问题
- 1960共用体练习
- lua教程八----不用CCHttpClient而转用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
- 使用 Google V8 引擎开发可定制的应用程序
- vmware12 安装ubuntu 32位 0801
- VPN vs. SSH Tunnel: Which Is More Secure?
- git基本操作(入门级)
- 基于对话框的MFC项目实现窗口分割
- RedisTemplate zSet的使用, 根据点赞排序,和创建时间排序2种方式
- hibernate多对多配置 many-to-many
- Android几种强大的下拉刷新库