Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Dlaczego tekst się nie wyświetla?

Ostatnio zmodyfikowano 2015-06-10 21:00
Autor Wiadomość
marc_xxx
Temat założony przez niniejszego użytkownika
[SFML] Dlaczego tekst się nie wyświetla?
» 2015-06-08 18:41:07
Witam.
Mam, na pewno, prosty problem, którego nie potrafię rozwiązać. Stworzyłem klasę menu, w której powinny być jakieś przyciski. Dodałem jeden przycisk ale nie wyświetla się. Jak rozwiązać problem?
Część pliku main.cpp
C/C++
Menu menu( "menuBackground.jpg" );
menu.addButton( "START", "smallee.fon" );
Plik Menu.hpp
C/C++
#ifndef MENU_HPP
#define MENU_HPP

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <string>
#include <vector>
#include "Button.hpp"

using namespace std;

class Menu
{
public:
    Menu( string backgroundFilename, unsigned short width = 1024, unsigned short height = 768 );
    ~Menu();
    void draw( sf::RenderWindow & gameWindow );
    void addButton( string buttonName, string fontFilename );
   
private:
    sf::Texture backgroundImage;
    sf::Sprite background;
    vector < Button > buttons;
    static unsigned short countOfButtons;
};

#endif
Część pliku Menu.hpp
C/C++
void Menu::draw( sf::RenderWindow & gameWindow )
{
    gameWindow.draw( this->background );
    for( int i = 0; i < countOfButtons; i++ )
    {
        this->buttons[ i ].draw( gameWindow );
    }
}

void Menu::addButton( string buttonName, string fontFilename )
{
    this->buttons.push_back( Button( buttonName, fontFilename ) );
    countOfButtons++;
}
Plik Button.hpp
C/C++
using namespace std;

class Button
{
public:
    Button( string buttonName, string fontFilename );
    ~Button();
    void draw( sf::RenderWindow & gameWindow );
   
private:
    sf::Text buttonText;
    static sf::Font buttonFont;
};
Plik Button.cpp
C/C++
#include "Button.hpp"

sf::Font Button::buttonFont;

Button::Button( string buttonName, string fontFilename )
{
    this->buttonFont.loadFromFile( fontFilename );
    this->buttonText.setFont( buttonFont );
    this->buttonText.setString( buttonName );
    this->buttonText.setCharacterSize( 24 );
    this->buttonText.setColor( sf::Color::Black );
}

Button::~Button()
{
   
}

void Button::draw( sf::RenderWindow & gameWindow )
{
    gameWindow.draw( this->buttonText );
}

Wiem, że dużo tego ale problem jest błahy i chyba nie trzeba przyglądać się całemu programu. Po prostu napis, który dodałem w pliku main menu.addButton( .... ) nie wyświetla się. Zapewne nie dopisałem jakiejś linijki. Proszę o pomoc :)
P-133335
michal11
» 2015-06-08 21:27:20
Nie ustawiasz pozycji sf::Text.
Po co ci pole countOfButtons w Menu skoro vector może zwrócić swój rozmiar ?
P-133351
marc_xxx
Temat założony przez niniejszego użytkownika
» 2015-06-08 21:34:55
Nie to chyba nie jest wina tego że nie ustawiłem pozycji, teraz próbuję ale nic to nie daje ;) wydaje mi się, że problem leży w zapełnianiu vectora w linijce gdzie jest napisane:
this->buttons.push_back( Button( buttonName, fontFilename ) );
 Nie wiem czy w dobry sposób dodaję tutaj obiekt do vectora.
P-133352
Lora
» 2015-06-08 23:46:58
Sprawdź czy font się poprawnie wczytuje.
P-133363
marc_xxx
Temat założony przez niniejszego użytkownika
» 2015-06-10 21:00:13
Dobra teraz działa, problem był z czcionką - SFML nie czyta czcionek z rozszerzeniem .fon (ja użyłem .ttf). Czemu na to na początku nie wpadłem
P-133437
« 1 »
  Strona 1 z 1