2012-02-08 13 views
1

私のゲームのスコアを表示するために私の更新メソッドにCCLabelを追加しました。
そのlogCatがmessegeを示した後、スコアが5000に上げる前に、それがうまく機能:cocos2d-android:スコアを表示する方法

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); 

それを修正する方法は?

+1

メモリに問題があります。 CCLableとは関係ありません。 コードのメモリリークをチェックするだけです。 – Mihir

+0

CCLabelを正しく取り除くことに問題があります。何か案が? – Zahidul

答えて

3

私はあなたが必要とするたびに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); 
+0

ありがとうMihirあなたは右です。 – Zahidul

+0

こんにちは私はまたスコアを表示したいが、これを使用して私は1つだけのレベルを表示するが、私はどのように私が行うことができます賢明なスコアレベルを表示したいですか? – ishu

+0

@ user_123あなたのコードを表示できますか?あなたがしたいことについても説明してください。 – Mihir

1

labelFinishedが表示できないクリーンアップ(そのコードを表示していない)を行わない限り、5000個のラベルを作成しているようです。

クラスメンバーとして1つのCCLabelを保存し、スコア増分ごとに新しいラベルを作成する代わりにsetStringを使用する必要があります。

頻繁にラベル(スコアなど)を変更する場合は、CCLabelの代わりにCCLabelAtlasを使用することをおすすめします。

+0

public void labelFinished(オブジェクト送信者){ CCLabel label =(CCLabel)sender; \t \t if(label.getTag()== 11) _labelScores.remove(label); \t \t this.removeChild(label、true); }これは私のlabelFinisedメソッド@ badgerrです – Zahidul

+0

十分に公正です。 CCLabelAtlasを試しましたか? – badgerr

+0

ありがとうbadgerr私はsetStringを使用し、それは正常に動作します – Zahidul

関連する問題