Я пытаюсь, чтобы CCSprite был спрайтом обложки альбома для воспроизведения музыки на iPod, но проблема в том, что когда я меняю изображение с NoImage.png на фактическую обложку альбома, кажется, что CCSprite меняет размер иизображение меньше, чем было в CCSprite.Я, честно говоря, не понимаю, почему это происходит, но, может быть, кто-то еще это сделает!
В любом случае, вот как я создаю CCSprite в методе init,
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 с NoImage.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];