如何在ccsprite中从URL加载图像

时间:2013-03-25 09:01:35

标签: ios xcode cocos2d-iphone ccsprite

我在CCSprite中显示来自URL的图片。有很多图像,因此我需要非常快速地加载图像。 我编写的代码在模拟器中运行良好,但在iPad上崩溃了。现在我无法从设备日志中理解任何内容。

我的代码:

NSData *d = [NSData dataWithContentsOfURL:[NSURL URLWithString:[Data valueForKey:[NSString   stringWithFormat:@"%d", idx]]]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@ %@", documentsDirectory, string];
BOOL didWrite = [d writeToFile:filePath atomically:YES];
CCSprite * facebookImage = [[CCSprite alloc] initWithFile:filePath] ;

这里我将我的图像保存在文件中并将这些内容提供给CCSprite。

现在,来自URL的图像在模拟器中正确获取,但在设备上此代码崩溃。 P.S:还有其他方法,但它们的效果不好,所以我更喜欢NSRequest等方法。

2 个答案:

答案 0 :(得分:0)

设置断点,单步执行代码。写入可能失败,因为您的路径在文件名之前包含空格(格式字符串:"%@ %@"),或者因为字符串是nil。

编写故障安全代码:你已经有一个didWrite标志,你应该有一个if子句在写(和下载)成功时创建精灵,否则记录错误并可能创建一个占位符精灵。

答案 1 :(得分:0)

要在CCSprite中显示来自URL的图像,我现在改变了我的方法。

UIImage *uiimage2 = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
CCSprite * facebookImage = [[CCSprite alloc]initWithCGImage:uiimage2.CGImage key:string];

希望这个答案对某人有所帮助。

相关问题