zoukankan      html  css  js  c++  java
  • 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();
        
    }
  • 相关阅读:
    发布 Rafy .NET Standard 版本 Nuget 包
    使用 MarkDown & DocFX 升级 Rafy 帮助文档
    apache2服务器支持cgi功能
    百兆网口与千兆网口速率协商不成功
    ubuntu etho0 up cron
    linux 后台进程
    MySQL的事务性
    linux下visual studio code配置c++调试环境实例
    linux下visual studio code中gdb调试文件launch.json解析
    Zookeeper安装后,编译C client时报错"syntax error near unexpected token `1.10.2"
  • 原文地址:https://www.cnblogs.com/leehongee/p/4038311.html
Copyright © 2011-2022 走看看