Forum de la communauté SFML

Aide => Système => Discussion démarrée par: Djushima le Janvier 22, 2020, 08:32:10 pm

Titre: [RESOLU] Thread et Fonction de classe à un parametre
Posté par: Djushima le Janvier 22, 2020, 08:32:10 pm
Bonjour!

Je suis plutôt nouveau sur SFML, et je rencontre actuellement un problème dans lequel je comprends le soucis, mais ne voit pas comment mettre en place la solution

J'ai une classe, appellée "Animation", avec a l'interieur une fonction Play(). J'aimerai que cette fonction s'execute en parallèle du reste du programme et utilse donc un Thread. Voici le bout de code correspondant:

public:

        Animation(animName index) : animThread(&Animation::Play, this){
                this->Name = index;
                switch (Name) { . . . }
        }

        ~Animation() { . . . }

        void Play(sf::RenderWindow &window);

        sf::Thread animThread;
};

Je l'appelle dans le main() de mon app avec le code suivant:
auto shotAnim = new Animation(animName::Shot);
shotAnim->animThread.launch();

Et il me donne l'erreur suivante: C2064: le terme ne correspond pas à une fonction qui prend 1 argument.

Je comprends qu'il me manque l'argument de type RenderWindow dans "shotAnim->animThread.launch();", mais je ne vois pas comment le passer.

J'utilise Visual Studio 2017 (Debug, x86).

Pouvez-vous m'aider? merci !
Titre: Re: Thread et Fonction de classe à un parametre
Posté par: Laurent le Janvier 22, 2020, 09:51:12 pm
Avec SFML tu ne peux pas. Utilise std::thread !

Et... tout cela sent la fausse bonne idée et les embrouilles ;) Tu n'as pas besoin d'un thread pour gérer des animations.
Titre: Re: Thread et Fonction de classe à un parametre
Posté par: Djushima le Janvier 22, 2020, 11:27:33 pm
Merci de ta réponse ! Je vais aller voir ca.

Ah? Je veux jouer une animation en oneshot, pas en continu. Du coup j'ai fais ma fonction play a call quand je le souhaite. Le soucis est que je suis obligé de passer par un while pour parcourir toutes les frames de mon anim, et a partir de la, ca bloque toute mon application tant que l'anim n'est pas finie, pour ca que j'ai pensé a un thread.

Quelle solution me recommande-tu d'aller me renseigner?
Titre: Re: Thread et Fonction de classe à un parametre
Posté par: G. le Janvier 23, 2020, 02:29:01 am
Par exemple tu peux update ton animation à chaque frame du jeu en lui passant le temps écoulé depuis la dernière frame, ce temps s'accumule et quand il dépasse le temps qu'est censé durer l'image courante de l'animation tu passes à la prochaine image.
Tu peux t'inspirer d'un exemple sur le wiki avec la fonction update (https://github.com/SFML/SFML/wiki/Easy-Animations-With-Spritesheets).

Pas compris ce que tu veux dire par "jouer une anim en oneshot" par contre :p
Titre: Re: Thread et Fonction de classe à un parametre
Posté par: Djushima le Janvier 23, 2020, 01:34:31 pm
Je vois. Il faudrait donc que j'appelle ma fonction Play a chaque frame plutôt qu'une fois (une fonction update plutot que play du coup, je vais la modifier en m'inspirant des ressources).

C'est ca que j'entendais par oneshot. J'appelle ma fonction dans une seule frame, elle exécute toute l'animation (changement de sprite, clear, draw, display toutes les x secondes) et s'arrête, et non pas que celle ci voit si elle s'update a chaque frame.

Gros soucis de vision de la structure de ma part ahah.

Merci pour tout ca, je file modifier mon code !

EDIT: C'est bon ! J'ai adapté les ressources a mon code, et c'est vrai que c'est 100x plus simple. Merci Beaucoup !
Titre: Re: [RESOLU] Thread et Fonction de classe à un parametre
Posté par: elaboratemitt le Décembre 15, 2022, 05:29:03 am
Cela a également fonctionné pour moi.

happy wheels (https://happywheelsgame.io)
Titre: Re: core-ball
Posté par: kiara williams le Août 10, 2023, 09:31:48 am
The phrase could be seen as a way of saying that communication is essential for success in sports.The phrase could also be seen as a way of highlighting the social aspect of sports.The phrase could be used to describe the importance of building  https://core-ball.org  relationships with teammates. The phrase could be used to encourage players to communicate more effectively on the field.
Titre: Re: core-ball
Posté par: kiara williams le Août 10, 2023, 09:33:54 am
The phrase "chat is core ball game" is not a commonly used phrase, so it is difficult to say exactly what it means. However, based on my knowledge, it seems that the phrase may be used to describe the importance of communication in sports. In many sports https://core-ball.org communication between teammates is essential for success. Players need to be able to communicate effectively in order to coordinate their movements, strategize, and make adjustments during the game.