Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Boite de dialogue simple  (Lu 3323 fois)

0 Membres et 1 Invité sur ce sujet

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Boite de dialogue simple
« 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

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Boite de dialogue simple
« Réponse #1 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 ;)
Laurent Gomila - SFML developer

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Re : Boite de dialogue simple
« Réponse #2 le: Avril 27, 2014, 08:52:17 pm »
Merci pour tes conseils je vais changer ça tout de suite  :)