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

Auteur Sujet: [Résolu] Sprite affiche depuis une classe fille  (Lu 2875 fois)

0 Membres et 1 Invité sur ce sujet

DipStax

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
[Résolu] Sprite affiche depuis une classe fille
« le: Novembre 26, 2018, 09:06:23 pm »
Bonjour a tous, quand je veux afficher un sprite depuis une classe fille, elle ne s'affiche pas.


classe mère:
#include <SFML/Graphics.hpp>
#include <iostream>

#include "Bouton.h" // inutile pour résoudre le problème

Bouton::Bouton() {}

Bouton::Bouton(Vector2f pos, string txtr, short adrs, short adrs_b) {
        this->initTexture(txtr, pos);
        m_adrs = adrs;
        m_adrs_b = adrs_b;
        m_txt_ent = false;
}

Bouton::Bouton(Vector2f pos, string txtr, short adrs, short adrs_b) {
        this->initTexture(txtr, pos);
        m_adrs = adrs;
        m_adrs_b = adrs_b;
        m_txt_ent = false;
}

void Bouton::initTexture(string str_txtr, Vector2f pos) {
        m_texture.loadFromFile(str_txtr);
        m_sprite.setTexture(m_texture);
        m_sprite.setPosition(pos);
        m_itBox = m_sprite.getGlobalBounds();
}

void Bouton::draw(RenderWindow& screen) {
        screen.draw(m_sprite);
}
 

Class fille:
#include <SFML/Graphics.hpp>
#include <iostream>

#include "BoutonKey.h" // inutile pour résoudre le problème
#include "Bouton.h" // inutile pour résoudre le problème

BoutonKey::BoutonKey(Vector2f pos, Vector2f posTxt, string txtr, short adrs, short adrs_b, string txt_def, short txt_max_size, short size, Uint8 color_R, Uint8 color_G, Uint8 color_B, Uint8 color_A) {
        Bouton(pos, txtr, adrs, adrs_b);
        initTexte(posTxt, txt_def, size, color_R, color_G, color_B, color_A);
}

BoutonKey::~BoutonKey() {}

void BoutonKey::initTexte(Vector2f posTxt, string txt_def, short size, Uint8 color_R, Uint8 color_G, Uint8 color_B, Uint8 color_A) {
        m_text_aff.setString(txt_def);
        m_text_aff.setCharacterSize(size);
        m_text_aff.setFillColor(Color(color_R, color_G, color_B, color_A));
}

void BoutonKey::draw(RenderWindow& screen) {
        screen.draw(m_text_aff);
}
 

Main:
#include <SFML/Graphics.hpp>
#include <iostream>
#include "Bouton.h"
#include "BoutonKey.h"

using namespace std;
using namespace sf,

// Initialisation de la fenêtre, de toute les variables

vector<unique_ptr<Bouton>> list_bouton;

list_bouton.push_back(make_unique<BoutonKey>(Vector2f(50, 125), Vector2f(20, 20), "txtr.jpg", 1, 0, "txt def", 12, 24, 185, 185, 185, 255)); // ne s'affiche pas
list_bouton.push_back(make_unique<Bouton>(Vector2f(50, 200), "txtr.jpg", 1, 3)); // celui ci s'affiche correctement

// ouverture de la boucle d’événement,...
for (auto&& bouton : list_bouton) {
        bouton->draw(screen);
}
screen.display();
// fin de la boucle
 

Merci d'avance.
« Modifié: Novembre 26, 2018, 11:08:38 pm par DipStax »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re: Sprite affiche depuis une classe fille
« Réponse #1 le: Novembre 26, 2018, 10:05:13 pm »
Ce n'est pas comme ça qu'on appelle le constructeur de la classe parent dans la classe fille en C++, il faut l'appeler dans la liste d'initialisation.
Random résultat google qui explique ça.

DipStax

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re: Sprite affiche depuis une classe fille
« Réponse #2 le: Novembre 26, 2018, 11:08:11 pm »
Ah oui merci!