cocos2dx 獲取網絡圖片

這次準備做一些網絡的功能,賬號註冊登錄的功能已經完成了,現在需要完成玩家頭像的功能,首先是獲取網絡圖片。

爲此在網上看了很多博客和文章,終於嘗試成功了,原帖在http://www.cnblogs.com/leehongee/p/4038311.html

但是現在只完成了在win32上獲取圖片,還沒有嘗試android平臺,下次嘗試獲取聯網權限。


在.h裏包含頭文件

#include "network/HttpClient.h"
using namespace cocos2d::network;

並在類中聲明

void doHttpRequest(const char* url,const char* tag,const ccHttpRequestCallback& callback);
void onHttpRequestImageCompleted(HttpClient *sender, HttpResponse *response);
//獲取請求網絡圖片資源
cocos2d::Texture2D* texture;

在.cpp添加

void HelloWorld::doHttpRequest(const char* url,const char* tag,const ccHttpRequestCallback& callback)
{
  
    HttpRequest* request = new HttpRequest();
    request->setUrl(url);
    request->setRequestType(HttpRequest::Type::POST);
    
    //這是回調對象和回調函數
    request->setResponseCallback(callback);
    request->setTag(tag);
    
    
    HttpClient::getInstance()->send(request);
    
    //釋放內存
    request->release();

}

void HelloWorld::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;
    }
    
    
    std::vector<char> *buffer = response->getResponseData();
    
    //create image
    Image* image = new Image;
    image->initWithImageData((unsigned char*)buffer->data(),buffer->size());
    
    //create texture
    texture = new Texture2D();
    bool isImage = texture->initWithImage(image);

	if(isImage){
        log("Texture2D init success");
    }
    image->release();
}

以上是已經寫好的函數,可以直接拿來用,現在我們需要知道怎麼使用它:

doHttpRequest("http://127.0.0.1/pic/default.jpg","pic",CC_CALLBACK_2(HelloWorld::onHttpRequestImageCompleted,this));
我讀取了本地服務器的一張圖片

調用這個函數之後,圖片就存在texture裏了

發佈了41 篇原創文章 · 獲贊 19 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章