C ++ SFML 2文本未按预期更新

时间:2013-10-13 19:58:42

标签: c++

我是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或得分:20等。

std :: cout&lt;&lt;“得分:”&lt;&lt; numberScore&lt;&lt;的std :: ENDL;在Update()函数中正常工作并正在打印正确的结果。

我无法弄清问题是什么,所以我需要帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

也许你应该在Update()的末尾添加text.setString(textString);(在修改textString之后)。

此外,numberScore可能不应该是静态变量,font永远不会被释放。