Forum de la communauté SFML

Aide => Général => Discussion démarrée par: yhu420 le Avril 27, 2014, 06:30:08 pm

Titre: Boite de dialogue simple
Posté par: yhu420 le Avril 27, 2014, 06:30:08 pm
Bonjour tout le monde,
J'ai vite fait essayé de créer une simple boite de dialogue si on peut appeler ca, faite d'un sf::rectangleshape et d'un sf::shape.
Le but est donc de draw la shape puis le texte.
En gros, je m'y suis pris comme ca:
class fenetre : public rectangleshape
{
public:
fenetre(){m_texte.setString("Hello world"); setfillcolor(); setposition() etc etc};

        virtual unsigned int getPointCount() const
        {
                return getPointCount();
        }
        virtual sf::Vector2f getPoint (unsigned int index) const
        {
                return getPoint(index);
        }

private:
sf::Text m_text;
}
 

C'est là que mes deux questions interviennent.
1) Est-ce qu j'hérite de la bonne classe? (sf::Drawable n'est il pas mieux?)
2)Si oui, où j'affiche le texte?

Aussi j'ai essayé d'implémenter draw dans cette classe avec les deux autres fonctions virtuelles, en faisant:
target.draw(*this);
target.draw(m_text);

mais au niveau du draw (this) j'ai un stack overflow et donc je pense que c'est pas la bonne voie.
Merci pour vos réponses  :D
Titre: Re : Boite de dialogue simple
Posté par: Laurent le Avril 27, 2014, 06:58:44 pm
Citer
1) Est-ce qu j'hérite de la bonne classe? (sf::Drawable n'est il pas mieux?)
Non. (si).

Citer
2)Si oui, où j'affiche le texte?
Regarde dans le tutoriel correspondant, il y a un exemple (c'est la même chose quelque soit la classe dont tu hérites, puisqu'elles héritent toutes de sf::Drawable).

Citer
    virtual unsigned int getPointCount() const
    {
        return getPointCount();
    }
    virtual sf::Vector2f getPoint (unsigned int index) const
    {
        return getPoint(index);
    }
Là tes fonctions se rappellent elles-même indéfiniment. Si ce que tu veux c'est appeler la version de la classe de base, il faut l'indiquer explicitement.

    virtual unsigned int getPointCount() const
    {
        return sf::RectangleShape::getPointCount();
    }
    virtual sf::Vector2f getPoint (unsigned int index) const
    {
        return sf::RectangleShape::getPoint(index);
    }
Mais bon, si c'est pour faire ça, inutile de les réimplémenter ;)
Titre: Re : Boite de dialogue simple
Posté par: yhu420 le Avril 27, 2014, 08:52:17 pm
Merci pour tes conseils je vais changer ça tout de suite  :)