如何实现cocos2dx 网络获取图片呢?今天我们就来看看cocos2dx 网络获取图片的具体实现过程。
  1.  //
  2. //  Connection.h
  3. //  XXDemo
  4. //
  5. //  Created by LeeHonGee on 14-9-4.
  6. //
  7. //
  8. #ifndef __XXDemo__Connection__
  9. #define __XXDemo__Connection__
  10. #include <iostream>
  11. #include "cocos2d.h"
  12. #include "network/HttpClient.h"
  13. USING_NS_CC;
  14. using namespace std;
  15. using namespace cocos2d::network;
  16. class Connection{
  17. public:
  18. void doHttpRequest(const char* url,const char* requestData,const char* tag,const ccHttpRequestCallback& callback);
  19. void onHttpRequestImageCompleted(HttpClient *sender, HttpResponse *response);
  20. private:
  21.  //获取请求网络图片资源
  22. Texture2D* texture;
  23. };
  24. #endif /* defined(__XXDemo__Connection__) */

  1.  //
  2. //  Connection.cpp
  3. //  XXXDemo
  4. //
  5. //  Created by LeeHonGee on 14-9-4.
  6. //
  7. //
  8. #include "Connection.h"
  9.  /**
  10. 编译到Android平台之后注意添加联网权限
  11. **/
  12. void Connection::doHttpRequest(const char* url,const char* requestData,const char* tag,const ccHttpRequestCallback& callback){
  13. HttpRequest* request = new HttpRequest();
  14. request->setUrl(url);
  15. request->setRequestType(HttpRequest::Type::POST);
  16. //这是回调对象和回调函数
  17. request->setResponseCallback(callback);
  18. request->setTag(tag);
  19. //请求的数据
  20. if(strlen(requestData)!=0){
  21. request->setRequestData(requestData,strlen(requestData));
  22. }
  23. HttpClient::getInstance()->send(request);
  24. //释放内存
  25. request->release();
  26. }
  27. void Connection::onHttpRequestImageCompleted(HttpClient *sender, HttpResponse *response){
  28. if (!response)
  29. {
  30. return;
  31. }
  32. // You can get original request type from: response->request->reqType
  33. const char* tag  =  response->getHttpRequest()->getTag();
  34. if (0 != strlen(tag))
  35. {
  36. log("%s completed", response->getHttpRequest()->getTag());
  37. }
  38. if (!response->isSucceed())
  39. {
  40. log("error buffer: %s", response->getErrorBuffer());
  41. return;
  42. }
  43. std::vector<char> *buffer = response->getResponseData();
  44. //create image
  45. Image* image = new Image;
  46. image->initWithImageData((unsigned char*)buffer->data(),buffer->size());
  47. //create texture
  48. texture = new Texture2D();
  49. bool isImage = texture->initWithImage(image);
  50. if(isImage){
  51. log("Texture2D 初始化!");
  52. }
  53. image->release();
  54. }