Project, Text wird nicht gezeichnet



  • MrBambi schrieb:

    EDIT: Sorry das war das falsche Projekt. Man bin ich verplant 😃 Hier das richtige:
    https://www.dropbox.com/s/1cqqzp4czgwkegp/Chicken%20Attack.rar

    Und jetzt erst habe ich es geschafft, das falsche Projekt zum kompilieren zu bringen. 👍
    Gab es irgendwelch Änderungen von Bedeutung? Habe jetzt ehrlich gesagt keine Lust, das ganze erneut von vorne zu machen.

    Und ja, Text sehe ich auch keinen. Mal schaun.



  • Naja beim ersten hab ich i.was gemacht dann konnte bei mir die projektmappe nimmer geöffnet werden. Das 2. war ne kopie wos noch ging. Aber ansonsten is es dasselbe.



  • Naja beim ersten hab ich i.was gemacht dann konnte bei mir die projektmappe nimmer geöffnet werden. Das 2. war ne kopie wos noch ging. Aber ansonsten is es dasselbe.



  • Ich hab nochmal was nachgeschaut. Es werden nichtmal die Text in einer Textbox angezeigt.



  • Fehler gefunden.

    Die ganzen GUI-Objekte (z.B. Button.cpp) haben zwar einen Text (mText), aber keine Font angegeben.

    Im Endeffekt fehlt in Button.cpp im Konstruktor ein mText.setFont(...); Aufruf.

    So sieht es bei mir aus.



  • DANKE! 😃
    Wie genau muss ich die Font jetzt laden?
    Ich hätte es so gemacht, einfach im Konstruktor

    sf::Font font;
    font.loadFromFile("arial.ttf");
    mText  .setFont(font);
    

    uu schreiben, aber da gibt es dann eine Zugriffsverletzung. Also wie hast du das gemacht? 🙂



  • MrBambi schrieb:

    DANKE! 😃
    Wie genau muss ich die Font jetzt laden?
    Ich hätte es so gemacht, einfach im Konstruktor

    sf::Font font;
    font.loadFromFile("arial.ttf");
    mText  .setFont(font);
    

    uu schreiben, aber da gibt es dann eine Zugriffsverletzung. Also wie hast du das gemacht? 🙂

    Die SFML Dokumentation sagt folgendes:

    It is important to note that the sf::Text instance doesn't copy the font that it uses, it only keeps a reference to it. Thus, a sf::Font must not be destructed while it is used by a sf::Text

    Heißt: Ein sf::Text Objekt kopiert die Font nicht, sondern speichert nur eine Referenz auf das Font Objekt. Daher wird wohl die Zugriffsverletzung kommen.
    Die Font muss also zur kompletten Lebenszeit von mText erhalten sein.

    Eine Lösung könnte so aussehen:

    /// GUIObject.hpp, ca. Zeile 44:
    // ...
    sf::Texture mTexture;
    sf::Sprite  mSprite;
    sf::Text    mText;
    bool        mActive;
    sf::Font    mFont;   // Neu!
    // ...
    
    /// GUIObject.cpp, ca. Zeile 12 (im Konstruktor):
    // ...
    {
        mFont.loadFromFile("arial.ttf");
        mText.setFont(mFont);
    }
    

    Das ist zwar nicht die Speicher-Effizienteste Art, da jedes GUIObject eine eigene Kopie der Font hat, aber das könnte man auch einfach lösen (Stichwort static).



  • Vielen Dank! Endlich funktioniert es 😃



  • Wow, ihr habt den Fehler gefunden.
    Aber Moment...

    hustbaer schrieb:

    And now to something etwas mehr hilfreich: setFont


Anmelden zum Antworten