做到這一點的最好方法是創建一個spriteSheet。首先你可以得到http://zwoptexapp.com/,它的免費,你可以創建你的spritesheet使用科科斯(在出口商請確保你選擇cocos2d創建適當的plist)
你想打包所有圖像在1大紋理這樣你就可以用plist中它添加到您的項目(zwoptex將創建兩個你)
那麼你就可以
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"your_plist"];
切換紋理加載紋理操作慢,所以有在所有圖像在完成對spri的紋理更改後,相同的紋理將提升openGL的性能TE是很容易
[yourSprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"FRAME_NAME"]];
其中FRAME_NAME是在plist中框架的名稱(您可以通過選擇裏面的Xcode plist中看到它。
以隨機的方式循環,而不必重複圖片... (我會直接在這裏寫一些僞代碼,讓我做inits類的聲明和內聯實現:)內)
//WARNING THIS IS PSEUDO CODE :)
@interface Randomizer {
//an array of NSStrings containing all you images names
NSMutableArray *allImagesFrameNames = [NSMutableArray arrayWithCapacity:NUM_FRAMES];
CCSprite *sprite = alloc init
}
-(void) resetAllFrames {
[allImagesFrameNames removeAllobjects];
[allImagesFrameName addObject:@"FIRST_IMAGE"];
[allImagesFrameName addObject:@"SECOND_IMAGE"]; //add all your images
}
@end
,並顯示一個隨機幀:
-(void) display a randomImage {
//if the array is empty, all images are already been randomly displayed, so we reset the array
if([allImagesFrameName count] == 0)
[self resetAllFrames];
//we choose a random index
int randomIndex = arc4random %[allImagesFrameName count];
//we get the frame name at that index
NSString *imageFrameName = [allImagesFrameNames objectAtIndex:randomIndex];
//and we display the frame
[sprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:imageFrameName]];
[allImagesFrameNames removeObjectAtIndex:randomIndex];
}
感謝您Ultrakorne .. :)讓我實現了相同的回來給你。我想這對我很有用。 – Sarah 2012-01-18 09:44:37