cocos2d-x 3.x 加载网络图片并

cpp

调用

		//  这是个静态方法,得到一个httpClient实例  
		HttpClient* httpClient = HttpClient::getInstance();
		//    创建一个CCHttpRequest对象  
		HttpRequest* httpReq = new HttpRequest();
		//    设置请求类型  
		httpReq->setRequestType(HttpRequest::Type::GET);
		//  设置请求Url(可以更具需要从json 或xml,甚至html里解析获得到这个图片url)  
		httpReq->setUrl("http://avatar.csdn.net/A/6/5/1_qqxj2012.jpg");
		//    请求完成后回调  
		httpReq->setResponseCallback(CC_CALLBACK_2(HelloLayer::LoadFinish, this));
		//   为请求设置标签,后面可以根据这个标签来获取我们要的数据  
		httpReq->setTag("PicGet");
		//    设置连接超时时间  
		httpClient->setTimeoutForConnect(30);
		httpClient->send(httpReq);
		httpReq->release();
		httpReq = NULL;


回调
void HelloLayer::LoadFinish(HttpClient *sender, HttpResponse *response)
{
	//    判断是否响应成功  
	if (!response->isSucceed())
	{
		return;
	}

	const char* tag = response->getHttpRequest()->getTag();
	if (0 == strcmp("PicGet", tag))
	{
		std::vector<char> *data = response->getResponseData();
		int data_length = data->size();
		std::string res;
		for (int i = 0; i<data_length; ++i)
		{
			res += (*data)[i];
		}
		res += '\0';
	}


	// 数据转存  
	unsigned char* pBuffer = NULL;
	ssize_t bufferSize = 0;
	std::vector<char> *buffer = response->getResponseData();
	std::string path = CCFileUtils::sharedFileUtils()->getWritablePath() + "test.png";
	pBuffer = CCFileUtils::sharedFileUtils()->getFileData(path.c_str(), "r", &bufferSize);
	std::string buff(buffer->begin(), buffer->end());


	Image* image = new Image;
	image->initWithImageData((unsigned char*)buffer->data(), buffer->size());

	Texture2D* texture = new Texture2D();
	bool isImage = texture->initWithImage(image);
	image->release();
	CCSprite* temp = Sprite::createWithTexture(texture);
	temp->setPosition(VisableSize.x / 2, VisableSize.y / 2);
	addChild(temp);
	//保存到本地文件  
	CCLOG("path: %s", path.c_str());
	FILE *fp = fopen(path.c_str(), "wb+");
	fwrite(buff.c_str(), 1, buffer->size(), fp);
	fclose(fp);

}




                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值