Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Rafnavi le Mars 28, 2016, 10:39:11 am

Titre: Conversion d'une classe vers sf::Texture
Posté par: Rafnavi 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!
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: victorlevasseur 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 ?
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: Rafnavi 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");
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: Rafnavi 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
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: victorlevasseur le Mars 28, 2016, 07:06:39 pm
Je te conseille d'apprendre à coder en C++, car tu écris des choses complètement fausses.
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: Rafnavi le Mars 28, 2016, 07:16:03 pm
Par exemple?
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: victorlevasseur 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...
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: Rafnavi 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?
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: victorlevasseur le Mars 28, 2016, 07:33:17 pm
Pourquoi ne pas stocker un sf::Texture dans ta classe Tx ?
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: Rafnavi 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?
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: Rafnavi 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  ;)
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: Laurent 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 ;)
Titre: Re : Conversion d'une classe vers sf::Texture
Posté par: Rafnavi 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...)  ;)