2013-08-15 28 views
6

Animasyon için kullanılacak plists ve hareketli grafikleri yüklemek için hareketli çerçeve önbelleğini kullanıyorum. Bunun için 2 tane yaklaşımım var ve bunlardan birinin yanlış olduğuna eminim.Grafik çerçevesi önbelleğini cocos2d'de doğru şekilde kullanma

  1. i ne ben yakın gelecekte gerekiyor. (Ama şimdi benim önbelleği dolu i bütün yük sahnenin başlangıcında bu yüzden, zaman alır, çünkü başında önbelleğe i geleni yüklemek zorunda!)

  2. önbellek, olabildiğince boş kalmalı, bu yüzden animasyonu başlattığım anda önbelleğe yükleniyor (biraz zaman alıyor değil mi? Oyunumu hareket ettirdiğini düşünüyorum) ve Aynı anla işim bitti. (Şimdi önbelleği dolu değil ama birçok kez yeniden./Yüklemek zorunda)

  3. yapmak i önbellekten kullanılmayan sprite her zaman kaldırmak için bakmak zorunda? önbelleğe

yüküdür:

[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrameByName:@"stopAnim.plist"]; 

kullanılmayan kaldırarak geçerli:

[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames]; 

i sistem kullanılmayan sprite kaldırıp sorun yaşamaya çalışıyor benim iPad görebilirsiniz. Tam olarak ne işe yarıyor?

cevap

3

araştırma çok sonra ben bazı sonuçlara varmıştır:

Birincisi, (batchNode için (animasyon başlatılırken) gerçek zamanlı olarak kareleri yük zaman alır ve büyük görüntülerin durumlarda do iPad) bazen sahneyi donduruyor.

Eğer başka bir yol var ve bu, çünkü Yani, böyle bazı durumlarda, sen, o önlemek için init yöntemi ile önbelleğe görüntüleri yüklemek GEREKİR Elimizdeki neden zaten cache:

[[CCTextureCache sharedTextureCache] addImage:@"the_heavy_image.png"]; 

ve bu animasyon sık sık gerçekleşirse, önbellekten temizlemek istemezsiniz. Eğer önbellekten zaten ekrandan kaldırıldı yalnızca sprite temizleyecektir bunu

[[CCTextureCache sharedTextureCache] removeUnusedTextures]; 

kullanmak vermezsek

Diğer şeyler önbellekten temizlenmelidir.

sadece kareleri temizlemek için yeterli değil onun: Eğer sprite-yaprak görüntüleri büyük değil diğer senaryolarda

[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames]; 

animasyon başlar olduğu anda batchNode onları yüklemek ve kaldırmak olabilir sonunda onları.

İlgili konular