iPod の音楽を再生するときに CCSprite をアルバム アートワーク スプライトにしようとしていますが、問題は、画像を NoImage.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 の画像を 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];