【问题标题】:cocos2d-android: how to display scorecocos2d-android:如何显示分数
【发布时间】:2012-02-08 06:09:51
【问题描述】:

我在更新方法中添加了 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);

如何解决?

【问题讨论】:

  • 看起来有些内存问题。与 CCLable 无关。只需检查代码中的内存泄漏即可。
  • 正确删除 CCLabel 或任何东西的问题。有什么想法吗?

标签: android cocos2d-iphone cocos2d-android


【解决方案1】:

我认为您每次需要时都在创建 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);

【讨论】:

  • 嗨,我也想显示分数,但使用这个我只显示一个级别,但我想明智地显示分数级别我该怎么办?
  • @user_123 你能告诉我你的代码吗?还要说明你想做什么?
【解决方案2】:

除非 labelFinished 做了一些我们看不到的清理工作(您没有向我们展示该代码),否则您似乎正在创建 5000 个标签。

您应该将单个 CCLabel 存储为类成员并使用 setString 而不是为每个分数增量创建一个新标签。

更好的是,对于频繁更改的标签(例如分数),您应该使用 CCLabelAtlas 而不是 CCLabel。

【讨论】:

  • public void labelFinished(Object sender){ CCLabel label = (CCLabel) sender; if(label.getTag()== 11) _labelScores.remove(label); this.removeChild(label, true);这是我的 labelFinised 方法@badrr
  • 很公平。你试过 CCLabelAtlas 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多