根据您的描述,您遇到的问题与我遇到的完全相同,即 cocos2d for android 在处理大量单独加载的单个精灵时确实存在问题。
解决此问题的最佳途径是从此处获取(除非您有 mac)zwoptex 的免费 flash 版本http://zwopple.com/zwoptex/static/downloads/zwoptex-flashversion.zip
这将让您建立 spritesheets,我建议将尽可能多的 sprite 关联到每张表上,同时尝试将它们合理地分组。
这主要是因为 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