2012-01-03 2 views
0

В настоящее время я пытаюсь показать оценку, которая требует, чтобы текст динамически изменялся в игре. Я искал вокруг и обнаружил, что в большинстве случаев люди используют XML-макет для текста. Моя проблема: я вообще не использую XML для игры, потому что все это растровая графика. Любые советы или предложения по моей ситуации?Android - Динамический текст на растровом изображении

Вот метод рисования, чтобы нарисовать все, что

public void render(Canvas canvas){ 
    Bitmap bitmap; 
    Graphics.Coordinate coords; 
    canvas.drawBitmap(bgBitmap, 0, 0, null); 
    canvas.drawBitmap(closeBtnBitmap, 700, 0, null); 
    canvas.drawBitmap(groundBitmap, 0, 315, null); 
    canvas.drawBitmap(petBitmap, petX, petY, null); 
    for(Graphics pics : coins){ 
     bitmap = pics.getBitmap(); 
     coords = pics.getCoord(); 
     canvas.drawBitmap(bitmap, coords.getX(), coords.getY(), null); 
    } 
    canvas.drawBitmap(scoreBitmap, 300, 20, null); 
    canvas.drawText(scoreString, 300, 20, null); //change null to paintObj 
} 

Вот метод, чтобы обновить счет

private void updateScore(int score){ 
    initScore += score; 
    totalScore = initScore; 
    scoreString = Integer.toString(totalScore); 
} 

возвращает NullPointerException в android.graphics.Canvas.drawText (метод Native). Я пробовал записывать «scoreString», и он показывает правильно.

Редактировать: Solved, NullPointerException, вызванное нулевым объектом краски. Просто создать краски объект Paint paintObj = new Paint(); и установить объект paintObj.setTextSize(textSize) и paintObj.setColor(Color.WHITE);

+0

вы можете использовать холст для отображения текста: Paint p = new Paint(); p.setColor (Color.BLUE); canvas.drawText («ваша строка», 10, 10, p); –

+0

@HirenDabhi Использует это решение, но возвращает ошибку. Я добавил свой код. –

+0

в вашем коде вы прошли null в drawText (последний параметр). передать новую Paint(); –

ответ

2

Если вы делаете рисунок непосредственно через View или объект SurfaceView, вы можете проверить документацию Canvas:

http://developer.android.com/reference/android/graphics/Canvas.html

В частности, рисовать текстовую функцию. Это то, что я использую.

http://developer.android.com/reference/android/graphics/Canvas.html#drawText(java.lang.String, плавать, плавать, android.graphics.Paint)

Наслаждайтесь!

Если вы используете Open GL Surface, я не уверен, какие API доступны. На других платформах я загрузил своих персонажей в качестве текстурного атласа и просто поместил текстуры для правильного текста, который мне нужен на сцене.

+0

Я действительно нашел что-то вроде этого http://stackoverflow.com/questions/6304195/android-displaying-score-as-a-string-on-canvas-is- create-a-new-string-per-dr Но я не мог заставить его работать с ошибкой NullPointerException, я отлично следил за ней. Если это решение вы имеете в виду, я постараюсь работать над этим. –

+0

Работает ли эта настройка для вас или вы ищете другое решение? Если это последний, объясните немного больше о том, как вы развиваете свою игру, и я могу предложить лучшие решения. – nmjohn

+0

Если вы хотите опубликовать свой пример кода, я могу помочь с его отладкой. Я думаю, что это либо объект canvas недействителен, либо объект paint недопустим, и я могу попытаться помочь его отладить либо в этом вопросе, либо в другом, если вы ссылаетесь на него. – nmjohn