рисование строк в (Java-игра с использованием LWJGL и slick2D) не работает должным образом - PullRequest
0 голосов
/ 07 июня 2018

Я создаю игру на Java с использованием некоторых библиотек openGL.Я почти закончил приложение, но у меня есть действительно смешная проблема.Все, что мне нужно, это изменить цвет текста по умолчанию на другой, в моем случае это черный цвет.

Ровно больше часа я пытался сделать это, и каждый раз, когда я запускаю игру, все окно превращается в этот цвет ... Я записываю код там, и если у кого-то из вас есть какие-то идеи, я быхотел бы рассмотреть это.

import java.awt.Font;
import org.newdawn.slick.Color;
import org.newdawn.slick.TrueTypeFont;
import player.Player;


public class GameMenu {

    private TrueTypeFont gameFont;
    private Font font;

    public GameMenu() {

    font = new Font("Times New Roman", Font.BOLD, 24);
    gameFont = new TrueTypeFont(font, false);

 }

    public void drawChangableText(int x, int y, String changableText) {
    gameFont.drawString(x, y, changableText, Color.black);
 }

    public void update() {
    drawChangableText(1330, 700, "Lives " + Player.lives);
    drawChangableText(1330, 750, "Gold " + Player.gold);
 }
}

А потом я вызываю этот метод обновления где-то еще.Позвольте мне не забыть упомянуть, что если пропустить 4. параметр метода drawString (), все работает отлично, но с белым текстом на экране.

Еще раз, если бы кто-то мог помочь, я был бы признателен за это.Возможно, некоторые из вас отметят мой вопрос как дублированный, но технически это не так, у кого-то была похожая проблема, но в его случае он просто импортировал неправильную упаковку.Вот ссылка на похожую проблему

LWJGL Рисование цветного текста на экране проблема

1 Ответ

0 голосов
/ 07 июня 2018

Вы рисуете рамки с текущим цветом, в этом случае вы используете Color.black для всего в вашем кадре, а не только для текста.

Чтобы избежать чего-то подобного, вы можете сделать следующее:

public void drawChangableText(int x, int y, String text) {
    //pick your color
    Color.black.bind();
    //do the job
    gameFont.drawString(x, y, text, Color.black);
    //reset the color
    Color.white.bind();
}
...