2011-12-26 87 views
1

我正在用github(威冠周)的最新版本開發一個帶有Cocos2d框架的android遊戲。Cocos2d android在摩托羅拉xoom的紋理問題

在我的遊戲中,我使用了大量的圖像(總圖像大小約爲11MB)。

問題: 當我玩我的遊戲超過3次時,我得到的是黑盒子而不是圖像。

哪些步驟會重現該問題? 1.當我通過我的遊戲的「再次玩」功能玩3次以上的遊戲時。

預期產量是多少?你看到了什麼呢? - 圖像應該正確顯示而不是"BLACK BOX"

在我的logcat中,我看到堆內存大約13Mb。

  • 我已經通過下面方法釋放紋理

CCTextureCache.sharedTextureCache()removeAllTextures();

我也試着手動刪除精靈ex。 removeChild()方法。

但到目前爲止沒有找到任何解決方案。

如果有任何人有解決方案,請讓我知道。

+0

我也是同樣的問題..如果你發現任何解決方案,請讓我知道!!! .... – kalandar 2013-03-19 08:53:32

回答

0

從你所描述的情況來看,你遇到的問題與我所做的完全相同,這就是說,在處理大量單獨加載的單個精靈時,android的cocos2d真的很麻煩。

的最佳途徑如何才能解決這個問題是得到的(除非你有一臺Mac)從這裏http://zwopple.com/zwoptex/static/downloads/zwoptex-flashversion.zip

zwoptex的免費flash版本,這將讓你建立spritesheets,我建議持有將盡可能多的精靈放在每張紙上,同時儘量保持精確的分組。

這主要是由於cocos爲spritesheet中的所有sprite執行單個呈現,而不是每個sprite對每個sprite渲染一次,因此大大縮短了處理時間並減少了內存使用量。

然後你可以加載代碼的spritesheet如(不能保證,因爲我來自一個結構化項目抓片段這段代碼將執行,但它會引導你正確的解決方案)

CCSpriteFrameCache.sharedSpriteFrameCache().addSpriteFrames("menus.plist"); // loads the spritesheet into the frame cache 
CCSpriteSheet menuSpriteSheet = CCSpriteSheet.spriteSheet("menus.png", 20); // loads the spritesheet from the cache ready for use 

.... // menu is a CCLayer 
    CCSprite sprite = CCSprite.sprite(CCSpriteFrameCache.sharedSpriteFrameCache().spriteFrameByName("name of sprite from inside spritesheet.png")); 

menuSpriteSheet.addChild(sprite, 1, 1);/you add the sprite to its spritesheet 
menu.addChild(menuSpriteSheet, 1); // then add the spritesheet to the layer 
0

在運行時加載資源時會發生此問題。因此,在場景開始之前加載資源會更好。您可以執行以下操作。

  1. 在您的遊戲中使用精靈表。
  2. 在你的類的構造函數中實現你的UI。
  3. 在層中的重寫方法onEnter()中實現您的功能。
  4. 完成場景後,您必須卸載精靈表。

這些是我遵循的程序。 謝謝。

+0

編號列表項需要自動格式化期間後的空間:-) – kleopatra 2013-08-13 12:55:09

相關問題