Cocos2d проблема текстуры Android на Motorola xoom

Я разрабатываю игру в андроиде с каркасом Cocos2d с последней сборкой из github (Weikuan Zhou).

В моей игре я использовал множество изображений (общий размер изображений составляет около 11 МБ).

Проблема: я получаю черный ящик вместо изображений, когда играю в игру более трех раз.

Какие шаги воспроизведут проблему? 1. Когда я играю в свою игру более трех раз с помощью функции «Играть снова» в своей игре.

Каков ожидаемый результат? Что ты видишь вместо этого? – изображения должны отображаться правильно, а не "BLACK BOX" .

И в моем логарифме я вижу, что память кучи занимает около 13 Мб.

  • Я уже выпускаю Texture с помощью метода ниже

CCTextureCache.sharedTextureCache () removeAllTextures ().

Я также попытался удалить спрайт вручную ex. removeChild() .

Но пока не удается найти какое-либо решение.

Если у кого-нибудь есть решение для этого, пожалуйста, дайте мне знать.

Из того, что вы описываете, вы сталкиваетесь с той же проблемой, что и я, а это то, что cocos2d для Android действительно глючит, когда речь идет о множестве отдельных спрайтов, загружаемых индивидуально.

Лучший способ решить эту проблему – получить (если у вас нет mac) бесплатную флеш-версию zwoptex отсюда http://zwopple.com/zwoptex/static/downloads/zwoptex-flashversion.zip

Это позволит вам создавать спрайты, я предлагаю связать столько спрайтов, сколько вы можете на каждый лист, пытаясь сохранить их разумно сгруппированными.

В основном это касается кокосов, выполняющих одиночный рендер для ВСЕХ спрайтов в 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 

Эта проблема возникает при загрузке ресурсов во время выполнения. Поэтому лучше загружать ресурсы до начала сцены. Вы можете сделать следующее.

  1. Использование списков спрайтов для ресурсов в вашей игре.
  2. Внесите свой конструктор Ui в свой класс.
  3. Внесите свою функциональность в переопределенный метод onEnter () в вашем слое.
  4. Вы должны выгрузить свои листы спрайтов после окончания вашей сцены.

Это процедура, за которой я следую. Благодарю.