在cocos2D中异步下载图像

时间:2012-10-19 10:25:59

标签: iphone asynchronous cocos2d-iphone ios6

我使用CCSprite并使用函数spriteWithFile提供项目中存在的图像。现在我想从服务器下载图像并将其加载到cocos2D游戏场景中的CCSprite上。什么是好的选择。请建议。

我正在使用此代码而不能正常工作:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://50.62.138.228:6026/1370user.jpg"]]];
    NSURLResponse *response;
    NSError *error;
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    CCTexture2D *texture = [[CCTexture2D alloc] initWithData:responseData
                                                 pixelFormat:kCCTexture2DPixelFormat_RGBA8888
                                                  pixelsWide:50
                                                  pixelsHigh:50
                                                 contentSize:CGSizeMake(50, 50)];
    sprite_Temp = [CCSprite spriteWithTexture:texture];
    sprite_Temp.position=ccp(432,273);
    [self addChild:sprite_Temp z:5];

提前致谢。

2 个答案:

答案 0 :(得分:1)

顺序是:

 CCImage::initWithImageData(void* pData, int nDataLen, ...)
 CCTexture2D::initWithImage(CCImage* uiImage);
 CCSprite::initWithTexture(CCTexture2D* pTexture);

或在iphone中

从任何网址获取数据

  NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://sdufhs.com/img.png"]]];

NSURLResponse *response;
NSError *error;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

NSString *strResponse = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

您可以以数据形式获取数据......

 NSData *imgData = UIImagePNGRepresentation(image);

 CCTexture2D *texture = [[CCTexture2D alloc] initWithData:imgData
                                      pixelFormat:kTexture2DPixelFormat_RGBA8888
                                      pixelsWide:width2
                                      pixelsHigh:height2
                                     contentSize:size];

   CCSprite *sgfd = [CCSprite spriteWithTexture:texture];

答案 1 :(得分:0)

查看我的tutorial on creating a Webcam viewer with Cocos2D。本文的第二部分介绍了异步图像下载以加快速度。可以使用MIT许可证免费下载示例项目。