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

Auteur Sujet: Conversion d'une classe vers sf::Texture  (Lu 4896 fois)

0 Membres et 1 Invité sur ce sujet

Rafnavi

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
    • E-mail
Conversion d'une classe vers sf::Texture
« le: Mars 28, 2016, 10:39:11 am »
Bonjour,

Voici mon problème: J'ai fait un classe Tx, et je veux convertir Tx en un const sf::Texture&.

J'ai essyé par beaucup de moyens mais je n'y arrive pas.

Merci d'avance pour votre aide!

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : Conversion d'une classe vers sf::Texture
« Réponse #1 le: Mars 28, 2016, 02:14:31 pm »
Salut,

la vrai question est pourquoi veux-tu convertir un objet en objet de type sf::Texture ?

Rafnavi

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
    • E-mail
Re : Conversion d'une classe vers sf::Texture
« Réponse #2 le: Mars 28, 2016, 05:18:53 pm »
Pour raccourcir mon code.

Pour créer une texture, je doit faire:

sf::Texture texture;

if(!texture.loadFromFile("texture.png")
{
    //Erreur
}

Je veux raccourcir considérablement mon code en faisant ça:

Tx texture("texture.png");

Rafnavi

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
    • E-mail
Re : Conversion d'une classe vers sf::Texture
« Réponse #3 le: Mars 28, 2016, 05:36:16 pm »
désolé pour le double post, c'est juste pour préciser mon post précédent.

Mon Tx.h:

class Tx
{
   private:
     std::string m_file;

  public:
     Tx(std::string);  
};

Je n'ai pas mit les include et tout le rest car je l'ai écrit en ce moment (je ne suis pas sur mon ordinateur)

Mon Tx.cpp:

Tx::Tx(std::string fl)
{
    fl = m_file;

    //la où je veux effectuer la conversion

    if(!Tx.loadFromFile(m_file))
    {
        //Erreur
    }
}

Voilà, j'éspère que je suis clair  :D

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : Conversion d'une classe vers sf::Texture
« Réponse #4 le: Mars 28, 2016, 07:06:39 pm »
Je te conseille d'apprendre à coder en C++, car tu écris des choses complètement fausses.

Rafnavi

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
    • E-mail
Re : Conversion d'une classe vers sf::Texture
« Réponse #5 le: Mars 28, 2016, 07:16:03 pm »
Par exemple?

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : Conversion d'une classe vers sf::Texture
« Réponse #6 le: Mars 28, 2016, 07:21:51 pm »
Tx.loadFromFile(m_file)
Cette ligne n'a aucun sens, Tx ne possède pas la méthode loadFromFile...

Rafnavi

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
    • E-mail
Re : Conversion d'une classe vers sf::Texture
« Réponse #7 le: Mars 28, 2016, 07:23:10 pm »
Justement, c'est pour cela que je veux convertir Tx en sf::Texture (mais aussi pour pouvoir applique un Tx a un sf::Sprite), non?

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : Conversion d'une classe vers sf::Texture
« Réponse #8 le: Mars 28, 2016, 07:33:17 pm »
Pourquoi ne pas stocker un sf::Texture dans ta classe Tx ?

Rafnavi

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
    • E-mail
Re : Conversion d'une classe vers sf::Texture
« Réponse #9 le: Mars 28, 2016, 07:45:56 pm »
Comme cela? :

Tx::Tx(std::string fl)
{
    fl = m_file;

    sf::Texture texture;

    if(!texture.loadFromFile(m_file)
    {
        //Erreur
    }
}

ou faudrait-il faire un tableau?

Rafnavi

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
    • E-mail
Re : Conversion d'une classe vers sf::Texture
« Réponse #10 le: Mars 28, 2016, 09:35:47 pm »
Même commen cela, j'ai tésté et le compilateur me signale toujours la même erreur comme quoi un objet Tx ne fonctionne pas en argument a setTexture(ce qui est logique):

sprite.setTexture(objetTx)

Je revient donc sur mon idée de départ a faire un truc dans le genre:

Tx = sf::Texture;

même si je sais pertinemment que cela ne fonctionne pas  ;)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Conversion d'une classe vers sf::Texture
« Réponse #11 le: Mars 29, 2016, 08:56:34 am »
Est-ce que la classe Tx fait autre chose, ou bien elle existe juste pour pouvoir écrire le chargement en une ligne de code ?

Si elle fait autre chose :
class Tx : public sf::Texture
{
...
};
(déconseillé)

Sinon :
sf::Texture loadTexture(const std::string& filename)
{
    sf::Texture texture;
    texture.loadFromFile(filename);
    return texture;
}

Et n'oublie pas de gérer les cas d'erreur. Et passe aussi un peu de temps à apprendre le C++ et la programmation en général, avant de vouloir faire des choses compliquées ;)
Laurent Gomila - SFML developer

Rafnavi

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
    • E-mail
Re : Conversion d'une classe vers sf::Texture
« Réponse #12 le: Mars 30, 2016, 06:15:04 pm »
Merci!

Pour ma part, j'ai choisit la première methode car je compte ajouter des methodes (lissage, répeter...).
Cette classe existe juste pour me simplifier la vie et faire que je m'y retrouve un petit peu dans mon code  (si vous voyez le nombre astronomique de textures que j'ai du loader rien que pour faire mon personnage avancer fluidement en animation...)  ;)

 

anything