图像不显示并显示错误,如"cocos2d:CCTexture2D:使用RGB565纹理,因为图像没有alpha"

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)

它工作正常,也没有发出任何警告.

有人可以帮忙吗?提前致谢.

Man*_*hal 3

我已经解决了。不知怎的,我设法重新创建了图像,我从中创建了精灵。

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)