Man*_*hal 5 opengl-es texture2d cocos2d-iphone box2d-iphone ccsprite
我正在使用Box2D创建一个应用程序,其中我从资源库获取图像并将其显示为精灵.
这是我所做的代码:
从资产库获取图像:
CGImageRef imgRef = [[mutArrAssetPhotos objectAtIndex:i] thumbnail];
Run Code Online (Sandbox Code Playgroud)
创建Texture2D:
CCTexture2D *spriteTexture = [[CCTexture2D alloc]initWithCGImage:imgRef resolutionType:kCCResolutionUnknown];
Run Code Online (Sandbox Code Playgroud)
从纹理创建精灵:
CCSprite *paddle = [CCSprite spriteWithTexture:spriteTexture];
Run Code Online (Sandbox Code Playgroud)
这让我 在控制台中发出警告:
"cocos2d: CCTexture2D: Using RGB565 texture since image has no alpha"
Run Code Online (Sandbox Code Playgroud)
仍然在模拟器中它虽然警告但但在设备图像中没有显示,但工作正常.
但相反,如果我使用:
CCSprite *paddle = [CCSprite spriteWithFile:@"img.png"];
Run Code Online (Sandbox Code Playgroud)
它工作正常,也没有发出任何警告.
有人可以帮忙吗?提前致谢.
我已经解决了。不知怎的,我设法重新创建了图像,我从中创建了精灵。
CGImageRef imgRef = [[mutArrAssetPhotos objectAtIndex:i] thumbnail];
UIImage *image = [self updateImage:[UIImage imageWithCGImage:imgRef]];
imgRef = image.CGImage;
CCSprite *paddle = [CCSprite spriteWithCGImage:image.CGImage key:[NSString stringWithFormat:@"%d",i]];
Run Code Online (Sandbox Code Playgroud)
为了更新图像,我重新绘制它,这样我就不会收到任何 alpha 警告。更新方法如下:
-(UIImage *) updateImage:(UIImage *)image
{
UIImageView *imgView = [[UIImageView alloc] initWithImage:image];
imgView.frame = CGRectMake(0,50, image.size.width,image.size.height);
image = [self captureImageFrom:imgView];
[imgView release];
return image;
}
-(UIImage *) captureImageFrom:(UIImageView *)view{
UIGraphicsBeginImageContext(view.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenShot;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1388 次 |
| 最近记录: |