• Cocos2dx网络读取图片


    //
    //  Connection.h
    //  XXDemo
    //
    //  Created by LeeHonGee on 14-9-4.
    //
    //
    
    #ifndef __XXDemo__Connection__
    #define __XXDemo__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* texture;
    
    };
    
    #endif /* defined(__XXDemo__Connection__) */
    //
    //  Connection.cpp
    //  XXXDemo
    //
    //  Created by LeeHonGee on 14-9-4.
    //
    //
    
    #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;
        }
        
        
        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 初始化!");
        }
        image->release();
        
    }
  • 相关阅读:
    Java 开发者不容错过的 12 种高效工具
    10个基于 Ruby on Rails 构建的顶级站点
    当 ITOA 遇上 OneAlert,企业可以至少每年节省 3600 小时!
    年度十佳 DevOps 博客文章(前篇)
    如何使用 Java8 实现观察者模式?(下)
    企业处理事件风暴的 2 种最佳管理方法
    移动开发:初学 iOS-UIViewController 心得
    如何使用 Java8 实现观察者模式?(上)
    世界级的安卓测试开发流!
    PHP全栈学习笔记19
  • 原文地址:https://www.cnblogs.com/leehongee/p/4038311.html
Copyright © 2020-2023  润新知