我正在尝试获取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:
答案 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找到整个项目。希望这会帮助你。