我在更新方法中添加了 CCLabel 以显示我的游戏分数.
它在分数提高到 5000 之前运行良好.之后 logCat 显示消息:
I added CCLabel in my update method to display my game score.
It works well before score raise to 5000. After that logCat shows the messege:
02-08 11:47:37.476: E/dalvikvm-heap(4190): 1048576-byte external allocation too large for this process.
02-08 11:47:37.476: E/dalvikvm(4190): Out of memory: Heap Size=14343KB, Allocated=13585KB, Bitmap Size=2078KB
java.lang.reflect.InvocationTargetException......
caused by java.lang.OutOfMemoryError
我的代码是:
countScore++ ;
Log.e("total Score:", "" + countScore);
CCLabel labelScore = CCLabel.makeLabel("" + countScore, "DroidSans", 20);
labelScore.setColor(new ccColor3B(1,1,1));
labelScore.setPosition(CGPoint.ccp(50, 50));
addChild(labelScore, 11);
labelScore.setTag(11);
_labelScores.add(labelScore);
CCCallFuncN actionMoveDone1 = CCCallFuncN.action(this, "labelFinished");
CCSequence action = CCSequence.actions(actionMoveDone1);
labelScore.runAction(action);
如何解决?
我认为您每次需要时都在创建 CCLabel.
I think you are creating CCLabel every time when you need.
CCLabel labelScore = CCLabel.makeLabel("" + countScore, "DroidSans", 20);
labelScore.setColor(new ccColor3B(1,1,1));
labelScore.setPosition(CGPoint.ccp(50, 50));
addChild(labelScore, 11);
labelScore.setTag(11);
不要那样做.
将您的 ScoreLable 设置为全局变量,并在构造函数中完成它的初始化、颜色设置和定位.在您的情况下,仅使用以下代码.
Don't do that.
Set your ScoreLable as global variable and complete its initialization, color setting and positioning in constructor. In your condition use only following code.
labelScore.setString("" + countScore);
这篇关于cocos2d-android:如何显示分数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!