Cocos2dx使用网络图片
#ifndef __Demo__Connection__
#define __Demo__Connection__
#include <iostream>
#include "cocos2d.h"
#include "network/HttpClient.h"
USING_NS_CC;
using namespace std;
using namespace cocos2d::network;
class Connection {
public:
void doHttpRequest(const char* url, const char* requestData, const char* tag, const ccHttpRequestCallback& callback);
void onHttpRequestImageCompleted(HttpClient *sender, HttpResponse *response);
private:
//获取请求网络图片资源
Texture2D* m_pTexture;
};
#endif /* defined__Demo__Connection__*/
#include "Connection.h"/** 编译到Android平台之后注意添加联网权限 **/
void Connection::doHttpRequest(const char* url, const char* requestData, const char* tag, const ccHttpRequestCallback& callback) {
HttpRequest* request = new HttpRequest();
request->setUrl(url);
request->setRequestType(HttpRequest::Type::POST); //这是回调对象和回调函数
request->setResponseCallback(callback); request->setTag(tag); //请求的数据
if (strlen(requestData) != 0){
request->setRequestData(requestData, strlen(requestData));
}
HttpClient::getInstance()->send(request); //释放内存
request->release();
}
void Connection::onHttpRequestImageCompleted(HttpClient *sender, HttpResponse *response) {
if (!response) { return; } // You can get original request type from: response->request->reqType
const char* tag = response->getHttpRequest()->getTag();
if (0 != strlen(tag)) {
log("%s completed", response->getHttpRequest()->getTag());
}
if (!response->isSucceed()) {
log("error buffer: %s", response->getErrorBuffer()); return;
}
auto buffer = response->getResponseData(); //create image
auto image = new Image;
if (image->initWithImageData((unsigned char*)buffer->data(), buffer->size())) {
auto texture = new Texture2D();
if (texture->initWithImage(image)) {
//直接使用该纹理创建
m_pTexture = texture;
CCLOG("TextTure2D Init Start");
auto sprite = Sprite::createWithTexture(texture);
sprite->setPosition(getContentSize() / 2);
addChild(sprite);
CCLOG("TextTure2D Init Finished ");
//把该图片保存到本地
std::string backData = " ";
backData.append(buffer->begin(), buffer->end());
std::string strSavePath = FileUtils::getInstance()->getWritablePath() + StringUtils::format("NetPhoto.png");
FILE *fp = fopen(strSavePath.c_str(), "wb+");
fwrite(backData.c_str(), 1, backData.size(), fp);
fclose(fp);
}
texture->release();
}
image->release();
}
Cocos2dx使用网络图片的更多相关文章
- quick cocos2dx lua 网络图片 下载 自己主动更新
转载请注明,原文地址:http://blog.csdn.net/dd135373/article/details/46468505 quick coocs2d-x 网络图片下载,自己主动更新纹理,保存 ...
- [原创]cocos2dx加载网络图片&异步加载图片
[动机] 之前看到一款卡牌游戏,当你要看全屏高清卡牌的时候,游戏会单独从网络上下载,本地只存了非高清的,这样可以省点包大小,所以我萌生了实现一个读取网络图片的类. [联想] 之前浏览网页的时候经常看到 ...
- 【cocos2d-x 手游研发小技巧(5)获取网络图片缓存并展示】
今天是年前最后一天上班了,最后一天上班,祝大家马上有各种东西,最后一天也给写一点干货,就是获取网络图片: 经过自己简单封装了一下,实现了获取网络图片,按照比例展示出来,实现方法是cocos2dx - ...
- cocos2d-x C++ 获取网络图片缓存并展示
#ifndef __HttpGetImg__ #define __HttpGetImg__ #include "cocos2d.h" #include "HttpRequ ...
- Cocos2d-x利用CCHttpRequest获取网络图片并显示
利用CCHttpRequest获取网上http地址的图片并缓存到本地生成CCSprite用于显示 //图片结构class imgstruct : public CCObject { public: i ...
- cocos2dx lua中异步加载网络图片,可用于显示微信头像
最近在做一个棋牌项目,脚本语言用的lua,登录需要使用微信登录,用户头像用微信账户的头像,微信接口返回的头像是一个url,那么遇到的一个问题就是如何在lua中异步加载这个头像,先在引擎源码里找了下可能 ...
- cocos2d-x CCHttpRequest获取网络图片并显示
转自:http://www.cnblogs.com/hzj730/p/3178431.html //图片结构 class imgstruct : public CCObject { public: i ...
- cocos2d-x lua 使用http(下载图片, POST JSON)
cocos2d-x lua 使用http(下载图片, POST JSON) version: cocos2d-x 3.6 1.使用http post json与服务器交互 require(" ...
- cocos2dx调用浏览器打开网址
安卓端cocos2dx/platform/android路径下CCApplication.h: virtual void openURL(const char* pszUrl); CCApplicat ...
随机推荐
- 生产环境使用Nginx+uwsgi部署Django
在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教 ...
- PHP 10 : 流程控制
原文:PHP 10 : 流程控制 感觉PHP和其他语言相似.说说PHP提供的流程控制关键字吧. 条件 ifelseelseifswitch 循环 whiledo{} while()breakconti ...
- C#在outlook里创建一封邮件到草稿箱
原文:C#在outlook里创建一封邮件到草稿箱 1.引用Microsoft.Office.Interop.Outlook.dll 2. 实现代码 public static int SendToD ...
- 用批处理编译*.sln工程
原文:用批处理编译*.sln工程 批处理是直接调用Microsoft Visual Studio 8\Common7\IDE\ 目录内的 devenv.exe ,它启动后就是IDE,提供的参数如下: ...
- html5 图片上传版本1.0
1.代码如下: /* autor:shzihouyu date:2015-12-11 ver:1.0 */ var szyFile = { fileDom:null,//html 文件上传控件 pre ...
- css3学习文档
什么是CSS3? CSS3是CSS2的升级版本,3只是版本号,它在CSS2.1的基础上增加了很多强大的新功能. 目前主流浏览器chrome.safari.firefox.opera.甚至360都已经支 ...
- 由浅入深学习.NET CLR 系列:目录
经过对Android的一阵折腾,些许熟悉了一些Java的东东,又开始转战.NET.我觉得学习最好和工作不要相离太远,才会更加随笔随意,索性整理一些比较系统的.NET的基础知识学习学习.一提起学习.NE ...
- C# 学习笔记1 .NET平台,C#的重要概念
.NET平台构成的三个关键实体是: 1.CLR(公共语言运行库):为我们定位,加载,管理.NET类型,同时负责一些底层细节的工作,如内存管理,应用托管,处理线程,安全检查等,它包含了一个重要名为msc ...
- UTF8国际通用为什么还要用GBK?
前序: 一直对编码很痴迷,让数据一目了然不好吗?为什么要去编码,这不是闲的没事,浪费生产力吗? 随着学习的深入,愈加觉得自己无知,世界语言千万种,在互联网的世界里如何表示他们?碰到汉字ASCii就显得 ...
- Xcode中如何集成Unity
项目中需要集成unity,摸索了大半周,碰到了很多坑,终于搞定. 我的方法是,通过unity导出一个空的iOS项目,然后再新建一个Xcode项目,针对配置页面一一对应.直到配置完全一样,然后倒入相关资 ...