android - cocos2d-android:如何显示分数

标签 android cocos2d-iphone cocos2d-android

我在我的更新方法中添加了 CCLabel 来显示我的游戏分数。
它在分数提高到 5000 之前运行良好。之后 logCat 显示消息:

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。

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 设置为全局变量,并在构造函数中完成其初始化、颜色设置和定位。在您的情况下,仅使用以下代码。

labelScore.setString("" + countScore);

关于android - cocos2d-android:如何显示分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9188591/

相关文章:

android - 如何获取用户在谷歌地图中输入的地址的坐标?

Android facebook检测首次登录

iphone - SimpleAudioEngine 需要时间来播放声音

ios - CCMenuItemAtlasFont 用法

compiler-errors - 在Android Studio中编译Cocos 2d-x项目时发生错误

android - 在 ListView 中编辑文本

Java/Android HttpURLConnection setChunkedStreamingMode 不适用于所有 PHP 服务器

iphone - 在cocos2d图层上绘制直线或矩形

android - 如何在扩展 CCLayer 的类中使用 getAssets

android - 在 cocos2d android 中打开应用程序对话框时自动关闭应用程序