CCSprite包含来自cocos2d v3中URL的图像

时间:2014-03-27 12:07:41

标签: ios objective-c cocos2d-iphone

我正在尝试获取Facebook个人资料图片,但我无法将从facebook获得的数据转换为纹理,

 NSData *data = [NSData dataWithContentsOfURL:url];
 UIImage *image = [UIImage imageWithData:data];
 NSLog(@"sprite nao existe");
 //convert UIImage to CCSprite
 **CCTexture *texture = [CCTexture textureWithFile:image];**


 CCSprite *sprite = [CCSprite spriteWithTexture:texture];
 sprite.position = ccp(winWidth*.5, winHeight*.5)

在CCTexture *文本行中...我收到此警告,这会使模拟器停止/崩溃:

Incompatible pointer types sending 'UIImage' to parameter of type NSString

当模拟器在Log

中停止时,这是消息
 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'TextureCache: fileimage MUST not be nil'
*** First throw call stack:

3 个答案:

答案 0 :(得分:2)

CCTexture *texture = [CCTexture textureWithFile:image];

此处图片必须是NSString而不是UIImage。 The reference会告诉你。

改为使用此方法:

- (id)initWithCGImage:(CGImageRef)cgImage contentScale:(CGFloat)contentScale

像这样:

CCTexture *texture = [[CCTexture alloc] initWithCGImage:image.CGImage 
                                           contentScale:image.scale];

答案 1 :(得分:0)

尝试以下代码在Sprite中设置图片

NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
CCSprite *sprite = [CCSprite spriteWithCGImage:image.CGImage key:@"BB"];
sprite.position = ccp(winWidth*.5, winHeight*.5)
[self addChild:sprite];

答案 2 :(得分:0)

是@ LearnCocos2D,你是绝对正确的。我在CCSprite上创建了一个类别,并创建了一个名为

的方法
+ (id)spriteWithURL:(NSString*)imageURL defaultSprite:(NSString*)defaultImage;

。它只是从defaultImage创建一个CCSprite,如果imageURL的图像下载完成,它会自动从下载的图像中设置CCSprite的纹理。您可以从GitHub找到整个项目。希望这会帮助你。