我使用CCSpriteFrameCache
很多,但不能理解它的一些東西。 我可以在遊戲開始時將很多.plist加載到緩存中嗎?或CCSpriteFrameCache
一次只有一個plist
?多次CCSpritevFramevCache在同一時間
現在有一個精靈,它是一個CCSpriteBatchNode
的孩子,它在遊戲過程中被多次創建,圖像不同。所以每次我創建一個新的精靈,我這樣做:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"cand%i.plist",stage]];
candySheet = [CCSpriteBatchNode batchNodeWithFile:[NSString stringWithFormat:@"cand%i.png",stage]];
[self addChild:candySheet];
sprite1 = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"cand%i.png",1]];
它可以嗎?
現在我們可以說我有2個spriteSheets和2個.plist,並且我想在我的init中加載它們兩個,並添加2個精靈,每個精靈都是一個子對象CCSpriteBatchNode
,併爲他的每個精靈渲染圖像自己的spriteSheet和Plist。但我得到的錯誤那麼:
CCSprite is not using the same texture id
所以,我明白,每次我要加載到緩存中,我需要在特定時間的plist ????
謝謝。
感謝您的回放,但是您寫下的所有信息我都已經知道了,這不是我的問題。我的問題是,如果每次我創建一個新的精靈,這是一個相同的spriteSheet的孩子,但每次他從該精靈表中呈現不同的圖像,所以我需要再次加載到緩存plist,或者我可以在init中做到這一點(你剛剛寫了什麼),並且緩存將繼續保存所有多個.plist文件,我將選擇我以後需要的東西? – Curnelious 2012-01-30 15:24:54
答案確實表示緩存是單一存儲:「CCSpriteFrameCache是跨所有場景和類共享的單個緩存。」 「您將所有加載的spritesheet存儲在此單個緩存中。」所以不,你不需要再次加載它,你可以稍後使用它,緩存是你已經加載的內容的存儲區。當你創建一個精靈時,它只是使用緩存中的紋理,根本不會改變緩存。 – FBryant87 2012-01-30 16:11:35