Android 如何使用url创建精灵?

Android 如何使用url创建精灵?,android,c++,cocos2d-x,Android,C++,Cocos2d X,我正在使用cocos2dxv3.0开发一个跨平台的应用程序(iOS、Android)。我想用URL创建一个CCSprite。我认为cocos没有办法做到这一点,所以我必须为Android和iOS提供代码。你必须通过Http请求图像url,一旦得到响应,你就可以根据响应数据创建图像并将其保存到手机上。之后,您可以从保存图像创建精灵。 You have to Http request the image url and once you got the response, you can creat

我正在使用cocos2dxv3.0开发一个跨平台的应用程序(iOS、Android)。我想用URL创建一个CCSprite。我认为cocos没有办法做到这一点,所以我必须为Android和iOS提供代码。

你必须通过Http请求图像url,一旦得到响应,你就可以根据响应数据创建图像并将其保存到手机上。之后,您可以从保存图像创建精灵。
You have to Http request the image url and once you got the response, you can create image from that response data and save it to your phone. After that you can create the sprite from the save image.

    void ClassName::downLoadImage()
    {
            std::string strImage = "img.png";

            CCHttpRequest* request = new CCHttpRequest();
            request->setUrl("url of your image");
            request->setRequestType(CCHttpRequest::kHttpGet);
            request->setResponseCallback(this, httpresponse_selector(ClassName::onImageDownLoaded));
            request->setTag(strImage.c_str());
            CCHttpClient::getInstance()->send(request);
            request->release();
    }

    void ClassName::onImageDownLoaded(CCHttpClient* pSender, CCHttpResponse* pResponse)
    {
        CCHttpResponse* response = pResponse;

        if (!response)
        {
            CCLog("No Response");
            return;
        }
        int statusCode = response->getResponseCode();

        char statusString[64] = {};
        sprintf(statusString, "HTTP Status Code: %d, tag = %s", statusCode, response->getHttpRequest()->getTag());
        CCLog("response code: %d", statusCode);

        if (!response->isSucceed())
        {
            CCLog("response failed");
            CCLog("error buffer: %s", response->getErrorBuffer());
            return;
        }
        std::vector<char> *buffer = response->getResponseData();

        CCImage * img=new CCImage();
        img->initWithImageData(&(buffer->front()), buffer->size());

        // Save image file to device.
        std::string writablePath = CCFileUtils::sharedFileUtils()->getWritablePath();
        writablePath.append(response->getHttpRequest()->getTag());


         //Now create Sprite from downloaded image
         CCSprite* pSprite = CCSprite::create(writablePath.c_str());
         addchild(pSprite);
    }
void ClassName::downLoadImage() { std::string strImage=“img.png”; CCHttpRequest*请求=新的CCHttpRequest(); 请求->设置url(“图像的url”); 请求->设置请求类型(CCHttpRequest::kHttpGet); request->setResponseCallback(这是httpresponse_选择器(ClassName::onImageDownLoaded)); 请求->设置标签(strImage.c_str()); CCHttpClient::getInstance()->发送(请求); 请求->发布(); } void ClassName::onImageDownLoaded(CCHttpClient*pSender,CCHttpResponse*pResponse) { CCHttpResponse*响应=响应前; 如果(!响应) { CCLog(“无响应”); 返回; } int statusCode=response->getResponseCode(); 字符状态字符串[64]={}; sprintf(状态字符串,“HTTP状态代码:%d,标记=%s”,状态代码,响应->getHttpRequest()->getTag()); CCLog(“响应代码:%d”,状态代码); 如果(!响应->isSucceed()) { CCLog(“响应失败”); CCLog(“错误缓冲区:%s”,响应->getErrorBuffer()); 返回; } std::vector*buffer=response->getResponseData(); CCImage*img=新CCImage(); img->initWithImageData(&(buffer->front()),buffer->size()); //将图像文件保存到设备。 std::string writablePath=CCFileUtils::sharedFileUtils()->getWritablePath(); append(response->getHttpRequest()->getTag()); //现在从下载的图像创建精灵 CCSprite*pSprite=CCSprite::create(writablePath.c_str()); addchild(pSprite); }