C ++ SFML 2 Текст не обновляется должным образом

0

Я новичок в SFML, и я пытаюсь сделать простую игру, но у меня есть проблема:

У меня есть класс Text, который обрабатывает мой результат, вот файл.h

#pragma once
#include <SFML\Graphics.hpp>
#include <string>
#include <iostream>

class Text
{
  public:
Text();
Text(std::string, std::string, sf::Vector2f position, int);
~Text();


void ModifyScoreBy(int value);

void Update();

void Draw(sf::RenderWindow &window);

static int getScore();



private:

sf::Text text;
sf::Font* font;
std::string pathToFont;
std::string textString;

static int numberScore;


};

и.cpp файл:

#include "Text.h"


int Text::numberScore = 0;

Text::Text()
{

}

Text::Text(std::string pathToFolder, std::string Text, sf::Vector2f position, int      numberScore)
{
font = new sf::Font;

if (!font->loadFromFile(pathToFolder))
    system("pause");


textString = Text;
this->numberScore = numberScore;
textString += std::to_string(numberScore);
text.setString(textString);
text.setFont(*font);
text.setPosition(position);
 }


 Text::~Text()
 {
 }

  int Text::getScore()
  {
return numberScore;
  }


  void Text::ModifyScoreBy(int value)
  {
numberScore += value;
  }

  void Text::Update()
  {
std::cout <<"Score: " << numberScore << std::endl;
textString = "Score: " + std::to_string(numberScore);
  }

  void Text::Draw(sf::RenderWindow &window)
  {
window.draw(text);
  }

материал с iostream предназначен для тестирования.

sf :: Text и sf :: Font инициализируются так, как должно, но в функции Update() он действительно не обновляет sf :: Text, он остается в рейтинге: 0, когда он должен быть оценен: 10 или Score: 20 и т.д.

std :: cout << "Оценка:" << numberScore << std :: endl; в функции Update() работает нормально и печатает правильный результат.

Я не могу понять, в чем проблема, поэтому мне нужна помощь.

Заранее спасибо.

Теги:

1 ответ

0

Может быть, вы должны добавить text.setString(textString); в конце Update() (сразу после изменения textString).

Кроме того, numberScore вероятно, не будет статической переменной, и font никогда не будет освобожден.

  • 0
    Все еще не работает после добавления text.setString (textString); Что касается numberScore, я также считаю, что это не должна быть статическая переменная, но я не знаю, почему она не работала хорошо (когда она не была статичной, после использования функции ModifyScoreBy (например, 10) вместо добавления 10 к предыдущий счет это было просто установить его на 10 каждый раз), поэтому я сделал его статичным, и это решило проблему. Однако спасибо за помощь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню