cocos2d-x C++ 获取网络图片缓存并展示
#ifndef __HttpGetImg__
#define __HttpGetImg__
#include "cocos2d.h"
#include "HttpRequest.h"
#include "HttpClient.h"
USING_NS_CC_EXT;
using namespace std;
USING_NS_CC;
class HttpGetImg : public cocos2d::CCLayer
{
public:
HttpGetImg();
~HttpGetImg();
//获取网络图片,需要地址
static void GetHttpImg(CCObject* obj, string imgurl,int number);
void onHttpRequestRptImg(cocos2d::extension::CCHttpClient *sender, cocos2d::extension::CCHttpResponse *response);
//按原来默认头像比例设置新图片大小
static void setImgSize(int oldhead_w,int oldhead_h,CCSprite* sprite);
//创建图片覆盖原有图片
static void CreateImg(CCSprite* tagSprite,CCSprite* oldSprite,CCTexture2D* texture,int newTag);
private:
};
#endif /* HttpGetImg */
#include "HttpGetImg.h"
#include "../DataModel/GlobalInfo.h"
#include "../GameConfig.h"
#include "../Commen/PublicDoFunc.h"
HttpGetImg::HttpGetImg(void)
{
}
void HttpGetImg::GetHttpImg(CCObject* obj, string imgurl,int number)
{
CCHttpRequest* request = new CCHttpRequest();
// required fields
request->setUrl(imgurl.c_str());
request->setRequestType(CCHttpRequest::kHttpGet);
request->setResponseCallback(obj, httpresponse_selector(HttpGetImg::onHttpRequestRptImg));
// optional fields
char thisnumber[10] = "";
sprintf(thisnumber, "%d",number);
request->setTag(thisnumber);
CCHttpClient::getInstance()->send(request);
request->release();
}
void HttpGetImg::onHttpRequestRptImg(CCHttpClient *sender, CCHttpResponse *response)
{
char c_tag[20]= "";
sprintf(c_tag, "%s",response->getHttpRequest()->getTag());
// CCLog("%s completed", response->getHttpRequest()->getTag());
string str_tag = c_tag;
if (!response)
{
return;
}
// You can get original request type from: response->request->reqType
if (0 != strlen(response->getHttpRequest()->getTag()))
{
// CCLog("%s completed", response->getHttpRequest()->getTag());
}
if (!response->isSucceed())
{
CCLog("response failed");
CCLog("error buffer: %s", response->getErrorBuffer());
return;
}
vector<char> *buffer = response->getResponseData();
//create image
CCImage* img = new CCImage;
img->initWithImageData((unsigned char*)buffer->data(),buffer->size());
//create texture
CCTexture2D* texture = new CCTexture2D();
bool isImg = texture->initWithImage(img);
img->release();
//将texture存下来
texture
//已下是自己封装的PublicDoFunc异步调用主线程执行换图操作的部分,可以自己去封装
//SEL_CallFuncN pfnCallback =callfuncN_selector(View_Room::upPlayerHead);
//CCNode* nd = CCNode::create();
//buffer->clear();
//nd->setTag(CCString::create(str_tag)->intValue());
//PublicDoFunc::toDoFuncN(LAYER_ROOM, pfnCallback,nd);
}
void HttpGetImg::setImgSize(int oldhead_w,int oldhead_h,CCSprite* sprite)
{
float s_X=oldhead_w/sprite->getContentSize().width;
float s_Y=oldhead_h/sprite->getContentSize().height;
sprite->setScaleX(s_X);
sprite->setScaleY(s_Y);
}
void HttpGetImg::CreateImg(CCSprite* tagSprite,CCSprite* oldSprite,CCTexture2D* texture,int newTag)
{
int oldw =oldSprite->getContentSize().width;
int oldh =oldSprite->getContentSize().height;
if(texture!=NULL)
{
CCSprite* sprite = CCSprite::createWithTexture(texture);
//按原比例设置
setImgSize(oldw,oldh,sprite);
sprite->setPosition(oldSprite->getPosition());
tagSprite->addChild(sprite,1,newTag);
texture->release();
}
}
HttpGetImg::~HttpGetImg(void)
{
}
cocos2d-x C++ 获取网络图片缓存并展示的更多相关文章
- 【cocos2d-x 手游研发小技巧(5)获取网络图片缓存并展示】
今天是年前最后一天上班了,最后一天上班,祝大家马上有各种东西,最后一天也给写一点干货,就是获取网络图片: 经过自己简单封装了一下,实现了获取网络图片,按照比例展示出来,实现方法是cocos2dx - ...
- 分享一个安卓中异步获取网络图片并自适应大小的第三方程序(来自github)
安卓中获取网络图片,生成缓存 用安卓手机,因为手机流量的限制,所以我们在做应用时,要尽量为用户考虑,尽量少耗点用户的流量,而在应用中网络图片的显示无疑是消耗流量最大的,所以我们可以采取压缩图片或者将图 ...
- 获取网络图片的大小 改变 图片色值 灰度什么的方法集合-b
直接上代码了 头文件 // 图片处理 0 半灰色 1 灰度 2 深棕色 3 反色 +(UIImage*)imageWithImage:(UIImage*)image grayLevelTy ...
- [转]Android 如何根据网络地址获取网络图片方法
http://blog.csdn.net/xiazdong/article/details/7724103 目录(?)[-] h2pre namecode classhtml stylefont-we ...
- 请求网络图片缓存到本地 ,还有一些现成的图片加载框架的使用 Ace网络篇(一)
现在去买年货~~~~~~ 占坑, 现在来填坑 填完睡觉,感谢这俩月的把自己往死里逼得奋斗从JAVA什么都不懂到现在,做这些也是给在自学路上的新人(我也是菜鸟)一点点我力所能及的帮助,等我水平更高了还会 ...
- iOS网络图片缓存详解
在开发移动应用的时候比如Android,IOS,因为手机流量.网速.内存等这些因素,当我们的移动应用是针对互联网,并要频繁访问网络的话,对网络优化这块就显得尤为重要了. 比如某个应用要经常显示网络图片 ...
- URL转Drawable之 Android中获取网络图片的三种方法
转载自: http://doinone.iteye.com/blog/1074283 Android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Applicatio ...
- iOS 获取网络图片的大小
一直都在找关于获取网络图片的大小的方法, 今天找到了一个能解决的办法 ,如下 1, 导入框架 #import <ImageIO/ImageIO.h> 2. 使用此方法得到image的siz ...
- PHP获取网络图片并保存在本地目录
PHP获取网络图片并保存在本地目录思路: 代码如下: function file_exists_S3($url) { $state = @file_get_contents($url,0,null,0 ...
随机推荐
- RN页面获取组件位置和大小的方法
在RN的页面布局和操作中,有时需要获取元素的大小和位置信息,本文从网上抄袭了几个常用方法,以备不时之需. 首先是获取设备屏幕的宽高 import {Dimensions} from 'react-na ...
- Skeleton Screen -- 骨架屏--应用
案例:使用 现已经在支付的项目使用 用户体验一直是前端开发需要考虑的重要部分,在数据请求时常见到锁屏的loading动画,而现在越来越多的产品倾向于使用Skeleton Screen Loading( ...
- POJ 2391 Ombrophobic Bovines (二分答案+floyd+最大流)
<题目链接> 题目大意: 给定一个有$n$个顶点和$m$条边的无向图,点$i$ 处有$A_i$头牛,点$i$ 处的牛棚能容纳$B_i$头牛,每条边有一个时间花费$t_i$(表示从一个端点走 ...
- python 3 实现文件下载的方法总结
新学的python,兴奋不已,于是网上各种资源各种爬,发现对于同样文件下载,各个下载方法的速度是不一样的(目前就知道两种方法下载#尴尬) 下面分别看下吧: 下载同样的图片,方法二的速度是方法一的二倍 ...
- React_基本原理_ajax
React 基本原理 初始化显示界面 创建虚拟DOM树 渲染到 原生 DOM 树 绘制界面显示 更新界面 setState() 更新状态机 重新创建虚拟 DOM 树 新/旧树比较差异 (执行一次 DO ...
- js 对象属性遍历
function 对象属性遍历(){ var obj = {x:1,y:2,c:3};for (var name in obj){ alert ( obj[name] )} } function 数组 ...
- 选择性计量学(Altmetric)介绍
不论是对科研人员还是对机构知识库管理者来说,对文章或期刊使用定量数据来评价都是很有意义的.比如,科研人员或论文的作者可以通过这些数据来了解该学科的基本情况,也可以为其个人总结或个人简历补充更为精细.更 ...
- 电子产品使用感受之——为什么我把Apple Watch S2 升级到了 S4?
2019.03.14 更新 最近在手表上安装了“摩拜单车”的APP,这绝对是一款使用体验加分的APP. 我每天上下班都要骑摩拜单车,但是每次掏出手机,首先FACE ID解锁屏幕,然后从上往下滑屏幕来触 ...
- Jenkins实现自动运行jmeter脚本
下载安装包 --jenkins的war包 下载地址:http://jenkins-ci.org/ 链接:https://pan.baidu.com/s/1VhwgYWqn3Bex2kCHigW5wA ...
- JAVA RPC (六) 之手把手从零教你写一个生产级RPC之client的代理
首先对于RPC来讲,最主要的无非三点[SERVER IO模型].[序列化协议].[client连接池复用],之前的博客大家应该对thrift有一个大致的了解了,那么我们现在来说一说如何将thrift的 ...