0

我正在从服务器下载图像并将其显示在游戏场景中。我能够从服务器获取图像的 CCTexture2D 并将其显示在游戏场景中。问题是来自服务器的图像大小可能不同。但我必须将该图像显示在预定义的帧 CCSprite 上。

CCSprite *temp = [CCSprite spriteWithTexture:[[CCTexture2D alloc] initWithImage:[UIImage imageWithData:data] resolutionType:kCCResolutioniPhoneFourInchDisplay]];
CCRenderTexture *test=[CCRenderTexture renderTextureWithWidth:70 height:70];   //set proper width and height
[test begin];
[temp draw];
[test end];
UIImage *img=[test getUIImageFromBuffer];
sprite_Temp =[CCSprite spriteWithCGImage:img.CGImage key:@"1"];
sprite_Temp.tag = K_TagUserImage;
sprite_Temp.scale=1;
sprite_Temp.position=ccp(432,273);
[self addChild:sprite_Temp z:1];

我正在使用此代码将 CCTexture2D 的大小调整为预定义的帧 CCSprite。但是图像被裁剪到不需要的所需帧。有人可以告诉我如何将原始图像从服务器获取到所需的帧而不被裁剪。谢谢。

4

1 回答 1

0

尝试 :

 CCSprite *temp = [CCSprite spriteWithTexture:[[CCTexture2D alloc] initWithImage:[UIImage imageWithData:data] resolutionType:kCCResolutioniPhoneFourInchDisplay]];
float scaleX = 70./temp.contentSize.width;
float scaleY = 70./temp.contentSize.height;
// if you want to preserve the original texture's aspect ratio
float scale = MIN(scaleX,scaleY);
temp.scale = scale;
// or if you want to 'stretch-n-squeeze' to 70x70
temp.scaleX = scaleX;
temp.scaleY = scaleY;
// then add the sprite *temp

通常的免责声明:未经测试,从内存中完成,小心除以 0 :)

于 2013-02-06T14:25:42.847 回答