Messagerie


Comment éviter les click en chaine sur un objets?

Wolkam
lundi 31 octobre 2016 à 10:30
Bonjour,

Une petite question parce que j'ai tout le temps une galère toute bête quand j'intercepte un clic sur un objet actif a deux états

en fait j'ai un bouton avec 2 etats "activé" et "désactivé" mais si c'est codé comme cela ça ne fonctionne pas

clic sur bouton + anim Stopped is playing  => change animation to Walking
clic sur bouton + anim Walking is playing  => change animation to Stopped

Le problème c'est que je pense que le système traite les deux infos à la suite et donc passe par les deux états.
Je ne peux pas utiliser l'objet bouton parce qu'en fait je traite bcp plus d'état que 2, alors aujourd'hui je passe par un flag qui déclenche un groupe qui change l'état du bouton, mais je ne sais pas s'il y a une astuce pour faire plus simple, en une seule ligne.

Si vous avez une info je suis preneur, j'essaye de simplifier mon code en ce moment


Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
lundi 31 octobre 2016 à 10:45
Soit, tu inverses un drapeau.
Soit la vielle technique du valeur du compteur=1- valeur du compteur pour transformer une incrémentation en interrupteur 1/0
Wolkam
lundi 31 octobre 2016 à 10:55
j'ai déjà essayé avec des flags, sans grand succès j'avais le même souci en fait a part a lui faire activer un groupe, ce que jke fais, mais sur une ligne d'évent, j'ai pas trouvé.
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
lundi 31 octobre 2016 à 11:07
Voilà qui résume mon propos.

[flash=640,480]http://image.gilawhost.com/16/10/31/x5so0aqj.swf[/flash]
Pièces jointes
denisstephane
lundi 31 octobre 2016 à 11:09
Met dans un objet actif les deux etat de ton bouton et place la vitesse a zero.
Ensuite:
quand clique sur objet actif
      inverser le drapeaux 0

drapeaux 0 on
      image d'animation a 1      (l'etat du bouton bien sur)
      ICI TU MET CE QUI SE PASSE COMME ACTION

drapeaux 0 off
      image d'animation a 0      (l'etat du bouton bien sur)
        ICI TU MET CE QUI SE PASSE COMME ACTION
Wolkam
lundi 31 octobre 2016 à 11:19
Merci Patrice et denis :)

Bon je ne peux pas appliquer cela car mon cas est bcp plus compliqué mais dans l'idée c'est ce que je fais, tu ne peux pas traiter le click sur la même ligne tu est obligé de passer sur un système qui gère l'état.

Moi dans mon jeu, j'ai un bouton "buy",
quand tu clique le bouton devient "setup"
tu cliques encore , ca affiche les catégories de piege et le bouton devient "close".
tu cliques sur une catégorie ca affiche les pieges et le bouton devient "back", etc...

Sauf que si j'enchaine les event "click sur bouton + anim active", ca ne fonctionne pas, donc je fais avec un compteur et j'ouvre un groupe qui traite en fonction du compteur. Mais bon c'est plus complexe a gérer pour moi car j'ai plusieur instance du bouton et comme j'ouvre un groupe, je dois retrouver le bouton qui a été cliqué.

Bref, merci en tout cas, àa me conforte dans l'idée que je ne peux rien faire pour éviter qu'il détecte le click de la souris sur l'objet et l'applique a chaque event qui suivent. Je sais c'est pas clair a décrire lol
conceptgame
429 messages
Fusion 2.5 Dev
Fusion 2.5+ Firefly Exporteur iOS Exporteur Android
lundi 31 octobre 2016 à 12:11
Ce qui fonctionne le mieux dans mon code quand il devient trop complexe c'est de généraliser.
Arriver à transformer:
clic sur bouton + anim Stopped is playing  => change animation to Walking
clic sur bouton + anim Walking is playing  => change animation to Stopped
en quelque chose comme:
clic sur bouton    => state("bouton")  = (state( "Trigger" )+1)mod num_states( "Trigger" )
                                + state("objet")  = state("bouton")
                                + change animation to state("objet")*12
où num_states est le nombre d'états possibles, ici 2 avec stopped(0) et  walking(1)
En gros une mini machine d'états.

Pièces jointes
Wolkam
lundi 31 octobre 2016 à 13:29
Ha voila un truc bien ficelé Conceptgame !
Merci je vais regardé dans le détail comment l'adapter a mon système.
Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
lundi 31 octobre 2016 à 13:40
Un truc que j'avais fait pour Middlmouse je crois : C'est quand on clic et qu'un drapeau est On, on fait l'action et le drapeau passe à Off. Puis quand on ne clic plus, le drapeau passe à On.
Kloug
1497 messages
Fusion 2.5
lundi 31 octobre 2016 à 21:07
Hello!

L'astuce infaillible que j'utilise avec une phase tactique, un actif avec une animation, on clique, on lance l'animation, cela évite que CTF s'emballe.

Le reste coule de source, tant que l'animation est jouée via une négation, aucun clic est pris en compte, pour un truc plus complexe, une animation en plus, bien sûr on peut utiliser en prime une variable, l'animation de l'actif est terminée plus 1 à la variable A, B, ou C.

A+

Edit:
L'important est de bien décomposer les différentes phases "click".

Kloug
1497 messages
Fusion 2.5
lundi 31 octobre 2016 à 22:17
Voici un exemple avec 3 phases, facile à capter, facile à modifier.

Edit:
Optimiser le klik code c'est bien.
Mais reprendre un projet, avec 3 heures pour se relire, parce qu'on a oublié le principe du truc... Optimiser à outrance, n'est pas forcément plus productif.
Pièces jointes
Wolkam
lundi 31 octobre 2016 à 23:16
Merci Kloug, ta solution est pas mal aussi, plus simple pour ajouter différentes phase, et tu utilise l'anim pour freiner le moteur.
Merci en tout cas pour toutes vos solutions !!! j'ai le choix maintenant, même si mon code tourne bien a présent, je vais voir si je refait tout ou si je garde ces astuces pour d'autres partie du jeu.
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 14 visiteurs au total

Derniers messages