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

Auteur Sujet: Problème sf::Sprite  (Lu 1417 fois)

0 Membres et 1 Invité sur ce sujet

clements

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Problème sf::Sprite
« le: Août 21, 2013, 04:38:12 pm »
Bonjour à tous, voilà mon souci:

sf::Sprite* Sprite::OnLoad(char* File) {
    sf::Image spriteSheet;
    sf::Texture texture;
    sf::Sprite* Sprite;

    spriteSheet.loadFromFile(File);
    spriteSheet.createMaskFromColor(sf::Color(255, 0, 255));

    texture.loadFromImage(spriteSheet);

    Sprite->setTexture(texture, false);

    return Sprite;
}

C'est un extrait d'une classe de gestion de sprite pour un moteur de jeu.
Le code compile mais ça crash.

Citation de: Debugger
Program received signal SIGSEGV, Segmentation fault.
In sf::Sprite::setTexture (this=0x44fc56 <std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()+70>, texture=..., resetRect=false) at D:\developpement\sfml\sfml\src\SFML\Graphics\Sprite.cpp:71 (

Si vous avez besoin d'avantage d'informations demandez moi.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème sf::Sprite
« Réponse #1 le: Août 21, 2013, 10:28:12 pm »
T'as 10 erreurs au mètre carré dans ce code.

Première chose, ton pointeur de sprite ne pointe vers rien, tu as oublié de l'initialiser (i.e. le faire pointer vers un sprite valide). Ici tu n'as pas besoin de pointeur, vire moi ces saletés ;)

Ensuite la texture est locale à la fonction, aussitôt qu'elle aura retourné la texture sera détruite et le sprite se retrouvera comme un con.

Ensuite tu ne vérifies pas si loadFromFile a réussi ou non.

Ensuite utilise std::string et non char* (au pire const char*).
Laurent Gomila - SFML developer