5

Box2D を使用して、アセット ライブラリから画像を取得し、それらをスプライトとして表示するアプリケーションを作成しています。

ここに私が行ったコードがあります:

アセット ライブラリから画像を取得する:

CGImageRef imgRef = [[mutArrAssetPhotos objectAtIndex:i] thumbnail];

Texture2D の作成 :

CCTexture2D *spriteTexture = [[CCTexture2D alloc]initWithCGImage:imgRef resolutionType:kCCResolutionUnknown];

テクスチャからスプライトを作成する :

CCSprite *paddle = [CCSprite spriteWithTexture:spriteTexture];

これにより 、コンソールに次のような警告が表示されます。

"cocos2d: CCTexture2D: Using RGB565 texture since image has no alpha"

まだシミュレーターでは警告がありますが正常に動作しますが、デバイスの画像は表示されていません。

しかし、代わりに私が使用した場合:

CCSprite *paddle = [CCSprite spriteWithFile:@"img.png"];

それは正常に機能しており、警告も出していません。

誰か助けてください?? 前もって感謝します。

4

2 に答える 2

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]];

画像を更新するために、アルファ警告が表示されないように再描画します。更新方法は次のとおりです。

-(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;
}
于 2012-09-04T05:01:40.597 に答える
0

サムネイルが画像形式を変更するため、プレーンなアルファ画像参照が得られないと思います(確認するドキュメントが見つかりませんでした)。

適切な画像 ref を作成するには、次を使用してみてください。

CGImageRef imgRef = [[[mutArrAssetPhotos objectAtIndex:i] defaultRepresentation] fullResolutionImage];
于 2012-08-28T11:51:45.837 に答える