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

[SFML] Klasa z funkcją rysującą na ekranie

Ostatnio zmodyfikowano 2013-12-20 21:41
Autor Wiadomość
kokon
Temat założony przez niniejszego użytkownika
[SFML] Klasa z funkcją rysującą na ekranie
» 2013-12-14 12:48:40
Witam, mam problem z klasą służącą do wyświetlania czegoś na ekranie (w tym przypadku tekstu). Kod klasy (jeszcze nie skończona, dlatego wszystko jest zostawione na public :P):
C/C++
class dymeczek
{
public:
    short polozeniewys;
    short polozenieszer;
    short przezroczystosc;
    sf::Text * tekst;
    std::string napis;
    bool renderend;
   
    dymeczek()
    {
        this->renderend = true;
    }
   
    void render( sf::RenderWindow * okieneczko )
    {
        if( !renderend )
        {
            std::cout << "Renderuje sie! ~Dymek" << std::endl;
            okieneczko.draw( this->tekst );
        };
    };
   
    void settext( std::string a )
    {
        this->napis = a;
        this->tekst = new sf::Text();
        this->tekst->setCharacterSize( 30 );
        this->tekst->setString( this->napis );
        this->tekst->setPosition( 0, 0 );
        this->renderend = false;
    };
};

Problem znajduje się tu:
okieneczko.draw( this->tekst );
. Próbowałem zmieniać na wiele sposobów tą linijkę, dodawałem globalne funkcje rysujące na ekranie, ale nic to nie daje. Zawsze mam masę błędów. Jak usunę tą linię to wszystko działa.

Tu kod używający tej funkcji:
C/C++
for( int i = 0; i < 20; i++ )
{
    powiadomienie[ i ]->render( gamescreen );
};

Z góry dziękuję za pomoc.

EDIT: Kod okna ;P
C/C++
//Otwarcie okna
sf::RenderWindow oknoAplikacji( sf::VideoMode( 1280, 680, 32 ), "---" );
sf::RenderWindow * gamescreen = & oknoAplikacji;
P-99177
MrPoxipol
» 2013-12-14 13:37:56
Nie widzę, żebyś gdzieś ustawiał czcionkę.

PS Straszny kod masz.
P-99182
kokon
Temat założony przez niniejszego użytkownika
» 2013-12-14 14:16:31
Już dodałem, ale nadal mam błędy (próbowałem
okieneczko->draw( this->tekst );
 jakby co).

PS: Czemu mam straszny kod?
P-99183
MrPoxipol
» 2013-12-14 14:29:18
Pokaż aktualny kod.
Czemu straszny kod? Nie trzymasz się jednego stylu w kodzie (różne nazewnictwo). Dla osoby, która nie jest autorem, ten kod może być (i jest) nieczytelny.
P-99185
kokon
Temat założony przez niniejszego użytkownika
» 2013-12-14 14:48:32
C/C++
class dymeczek
{
public:
    short polozeniewys;
    short polozenieszer;
    short przezroczystosc;
    sf::Text * tekst;
    std::string napis;
    bool renderend;
   
    dymeczek()
    {
        this->renderend = true;
    }
   
    void render( sf::RenderWindow * okieneczko )
    {
        if( !renderend )
        {
            std::cout << "Renderuje sie! ~Dymek" << std::endl;
            okieneczko->draw( this->tekst );
        };
    };
   
    void settext( std::string a )
    {
        this->napis = a;
        this->tekst = new sf::Text();
        this->tekst->setCharacterSize( 30 );
        this->tekst->setString( this->napis );
        this->tekst->setPosition( 0, 0 );
        this->tekst->setFont( bebas );
        this->tekst->setColor( sf::Color::White );
        this->renderend = false;
    };
};


||=== SFMLtest, Debug ===|
main.cpp||In member function 'void dymeczek::render(sf::RenderWindow*)':|
main.cpp|43|error: no matching function for call to 'sf::RenderWindow::draw(sf::Text*&)'|
main.cpp|43|note: candidates are:|
C:\Biblioteki c++\SFML-2.1\include\SFML\Graphics\RenderTarget.hpp|236|note: void sf::RenderTarget::draw(const sf::Drawable&, const sf::RenderStates&)|
C:\Biblioteki c++\SFML-2.1\include\SFML\Graphics\RenderTarget.hpp|236|note:   no known conversion for argument 1 from 'sf::Text*' to 'const sf::Drawable&'|
C:\Biblioteki c++\SFML-2.1\include\SFML\Graphics\RenderTarget.hpp|247|note: void sf::RenderTarget::draw(const sf::Vertex*, unsigned int, sf::PrimitiveType, const sf::RenderStates&)|
C:\Biblioteki c++\SFML-2.1\include\SFML\Graphics\RenderTarget.hpp|247|note:   candidate expects 4 arguments, 1 provided|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 0 seconds) ===|
P-99186
MrPoxipol
» 2013-12-14 15:37:35
okno.draw( * text )
Skoro masz wskaźnik...

/edit:
C/C++
class Tip
{
private:
    sf::Text text;
    std::string str;
    bool isRendered;
   
public:
    Tip()
    {
        isRendered = false;
    }
   
    void setText( const std::string & str )
    {
        this->str = str;
        this->text.setFont( font );
        this->text.setCharacterSize( 20 );
        this->text.setString( this->str );
        this->text.setPosition( 0, 0 );
        this->isRendered = true;
    }
   
    void render( sf::RenderTarget & target )
    {
        if( this->isRendered )
        {
            target.draw( this->text );
        }
    }
};
P-99196
kokon
Temat założony przez niniejszego użytkownika
» 2013-12-20 21:41:17
Dzięki wielkie :D Sory że teraz odpisuję, ale wyjechałem :P
P-99713
« 1 »
  Strona 1 z 1