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

Auteur Sujet: [Reglé] Verifier si image est appliqué a la texture  (Lu 1842 fois)

0 Membres et 1 Invité sur ce sujet

unitedelite

  • Jr. Member
  • **
  • Messages: 61
    • Voir le profil
[Reglé] Verifier si image est appliqué a la texture
« le: Octobre 05, 2012, 03:56:35 pm »
Bonjours tous le monde,

c'est encore moi et je viens avec un autre problème, j'aimerais savoir si il est possible de vérifier si une images a était appliqué a une texture pour une raison simple : pour un système d'animation j'ai ma classe "canon" qui dispose d'un vector de sprite attribué depuis une fonction


void chargementImages(string chemin,vector<Sprite> &listeSprite,Image &imageSprite,int x,int y,int &nbImage,bool &reverse)
{

    int largeurImage = 0, hauteurImage = 0;

    chemin += "info.txt";
    ifstream fichierInfo(chemin.c_str());

    fichierInfo >> nbImage; // nombre d'images que contiens l'animation
    fichierInfo >> Reverse; // si l'animation dois être "rembobinez"
    fichierInfo >> largeurImage;
    fichierInfo >> hauteurImage;

    for(int i=0;i<nbImage;i++)
    {
        Sprite sprite;
        sprite.SetImage(imageSprite);
        sprite.SetSubRect(IntRect(i*largeurImage,hauteurImage,(i*largeurImage)+largeurImage,hauteurImage));  // découpe de l'image
        sprite.SetPosition(x,y); // placement du sprite
        listeSprite.push_back(sprite); //ajout du sprite dans le vector de sprite
    }

}
 


puis j'appelle une autre fonction pour afficher mon animation :

bool Canon::Tir(RenderWindow &app)
{
        string chemin = "images/canon/animationTir/info.txt";

        if(m_nbImageActuel != m_nbImageTir) // si l'image actuel n'est pas egale au nombre d'image total de l'animation
        {
            if(animation(chemin,m_listeSpriteTir,m_nbImageActuel,m_reverse,app)) // si la fonction renvoi "true"
                m_nbImageActuel ++; // l'image actuel augmente de 1
            return true; // renvoi "true" jusqu'au programme pour dire que l'animation est encore en cours
        }
        else
        {
            return false; // renvoi "false" au programme pour dire que l'animation est fini
        }

}

bool animation(string chemin,vector<Sprite> &listeSprite,int &nbImage,bool reverse,RenderWindow &app)
{
    float tempsPasse = temps.GetElapsedTime();

    if(tempsPasse > 0.005)
    {
        app.Draw(listeSprite[nbImage]);
        temps.Reset();

        return true; // signale que la frame a était affiché et qu'il peut envoyer la suivante
    }
    else
        return false;
}


ce code peut être simplifié et je m'y pencherais quand il fonctionnera, je pense que le problème viens du fait que les sprites n'ont pas d'image alloué (quand j'essaye d'afficher directement une des frame de l'animation a la place de l'affichage normal du canon (qui fonctionne) et bien rien ne s'affiche)


je vous remercie beaucoup encore pour votre aide ^^


Edit : c'est réglé j'ai mis un pointeur pour le vector et j'avais découpé l'image en y a (170,170) donc l'image n’apparaissais pas ^^
« Modifié: Avril 22, 2013, 11:23:57 am par unitedelite »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Verifier si image est appliqué a la texture
« Réponse #1 le: Octobre 06, 2012, 11:18:15 am »
Au lieu de tout barrer et mettre à la fin "c'est bon", tu devrais juste mettre au début "problème reglé", ça évitera à tout le monde d'avoir à regarder jusqu'au bout pour voir de quoi il retourne ;)
Laurent Gomila - SFML developer