繁体   English   中英

更改CCSprite的图像会改变其大小?

[英]Changing image of CCSprite changes its size?

我正在尝试将CCSprite作为我的iPod音乐播放时的专辑图片精灵,但问题是,当我将图像从NoI​​mage.png更改为实际的专辑图片时,CCSprite似乎改变了尺寸并且图像更小比最初的CCSprite。 老实说,我不明白为什么会这样,但也许别人会这样!

无论如何这里是我如何在init方法中创建CCSprite,

albumArtwork = [[[CCSprite alloc] initWithFile:@"NoImage.png"] autorelease];
        [albumArtwork setScaleX:159 / albumArtwork.contentSize.width];
        [albumArtwork setScaleY:139 / albumArtwork.contentSize.height];
        albumArtwork.position = ccp(320/2, 190);
        [self addChild:albumArtwork z:26];

然后当iPod音乐开始时,我这样做是为了将CCSprite图像从NoI​​mage.png更改为iPod歌曲作品:

UIImage *albumArtworkImage = NULL;
    MPMediaItemArtwork *itemArtwork = [currentItem valueForProperty:MPMediaItemPropertyArtwork];
    if (itemArtwork != nil) {
        albumArtworkImage = [itemArtwork imageWithSize:CGSizeMake(albumArtwork.contentSize.width, albumArtwork.contentSize.width)];
    }

    if (albumArtworkImage) {
        CCTexture2D *tex = [[CCTextureCache sharedTextureCache] addCGImage:albumArtworkImage.CGImage forKey:@"albumArtwork"];
        [albumArtwork setTexture: tex];
    } else { // no album artwork
        CCTexture2D *tex = [[CCTextureCache sharedTextureCache] addImage:@"NoImage.png"];
        [albumArtwork setTexture:tex];
    }

有谁知道为什么会这样,如果有的话,我怎么能解决它?

Edit2 :这是我将其简化为:

CCTexture2D *tex;
    MPMediaItemArtwork *itemArtwork = [currentItem valueForProperty:MPMediaItemPropertyArtwork];
    if (itemArtwork) {
        UIImage *albumArtworkImage = NULL;
        UIImage *firstImage = [itemArtwork imageWithSize:CGSizeMake(159.0f, 139.0f)];
        albumArtworkImage = [firstImage resizedImage:CGSizeMake(albumArtwork.contentSize.width, albumArtwork.contentSize.height) interpolationQuality: kCGInterpolationHigh];
        albumArtworkImage = [albumArtworkImage roundedCornerImage:8 borderSize:4]; 
        tex = [[CCTextureCache sharedTextureCache] addCGImage:albumArtworkImage.CGImage forKey:@"albumArtwork"];
    } else { // no album artwork
        tex = [[CCTextureCache sharedTextureCache] addImage:@"NoImage.png"];
    }
    [albumArtwork setTexture:tex];
 if (albumArtworkImage) {
    CCTexture2D *tex = [[CCTextureCache sharedTextureCache] addCGImage:albumArtworkImage.CGImage forKey:@"albumArtwork"];
    [albumArtwork setTexture: tex];
} else { // no album artwork
    CCTexture2D *tex = [[CCTextureCache sharedTextureCache] addImage:@"NoImage.png"];
    [albumArtwork setTexture:tex];
}
// reset visual size after you set new texture:
[albumArtwork setScaleX:159 / albumArtwork.contentSize.width];
[albumArtwork setScaleY:139 / albumArtwork.contentSize.height];

这意味着您的精灵始终将以159x139像素的大小渲染,与图像大小无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM