Forums Développement Multimédia

Aller au contenu

Problème avec mouseEnabled ✔

CODE Actionscript

12 réponses à ce sujet

#1 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 639 messages

Posté 10 February 2013 - 11:07 AM

Bonjour,

J'ai un petit soucis concernant mon montage, quand mes clips sont en frame 2 sur la position rouge ils sont censés ne plus êtres cliquables mais je constate que ce n'est pas immédiatement le cas il est encore possible de cliquer dessus encore une fois avant que ce soit effectif ?!

Mon code:

var vtO:Number = 0;  VtO.text = String(vtO);

clavO.addEventListener(MouseEvent.CLICK, action);
  function action(e:MouseEvent):void{
  e.target.parent.gotoAndStop(2);
  e.target.mouseEnabled = false;
  vtO ++; VtO.text = String(vtO);
  }
 

Vous pouvez m'éclairer ?

Merci.

Fichier(s) joint(s)



#2 Galacta

    Etudiant Ingénieur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 689 messages

Posté 10 February 2013 - 11:44 AM

Salut,

Et si tu rajoutes un mouseChildren = false; juste après ton mouseEnable ?
Word hard, play hard.

#3 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 639 messages

Posté 10 February 2013 - 12:06 PM

Non ça ne fonctionne pas.

#4 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 10 February 2013 - 12:09 PM

salut :)


c'est clav0 que tu veux rendre inactif ? Auquel cas c'est currentTarget qu'il faut utiliser, target te renvoyant l'élément cliqué - possiblement un enfant de clav0 -

:roll:
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#5 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 639 messages

Posté 10 February 2013 - 12:56 PM

Salut Nataly,

Non ce n'est pas clavO mais les clips qu'il contient.

#6 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 10 February 2013 - 13:03 PM

oui mais ,n'est pas loin :

c'est le parent dont tu déplaces la tête de lecture, c'est la cible que tu rends insensible, je parierais bien qu'image 2 c'est une autre cible. Trace pour voir…
e.target.parent.gotoAndStop(2);
e.target.mouseEnabled = false;


[edit j'aurais bien vérifié a construction et testé mon idée,mais tu publies du CS6, on n'est pas nombreux à en disposer :? ]
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#7 Galacta

    Etudiant Ingénieur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 689 messages

Posté 10 February 2013 - 13:27 PM

Mais vu que c'est le parent qui écoute, les events ne seront-ils pas toujours dispatchés vers les enfants, même en désactivant leur réceptivité à la souris ?
Word hard, play hard.

#8 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 10 February 2013 - 13:36 PM

un objet, de type InteractiveObject, diffuse indépendamment de qui écoute. En revanche j'ai la grosse croyance qu'il ne diffuse (les événements souris) que si sa propriété enabled (sous entendu à la souris) est à true…
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#9 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 10 February 2013 - 13:44 PM

en fait c'est ça que je relevais :

Voir le messageGalacta, le 10 February 2013 - 13:27 PM, dit :

[…]les events ne seront-ils pas toujours dispatchés vers les enfants[…]

j'imagine que tu as écrit trop vite, mais on est d'accord qu'un objet qui diffuse un événement, ne le diffuse ni vers le parent ni vers l'enfant

Encore moins vers l'enfant, puisqu'il il est coutumier d'écouter en phase ascendante (bubble) on a l'impression d'écouter, depuis le parent, un événement diffusé par un enfant vers le haut, ce qui n'est pas tout à fait juste.
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#10 Galacta

    Etudiant Ingénieur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 689 messages

Posté 10 February 2013 - 13:49 PM

Perso je stockerai dans un dictionnaire chaque enfant de clav0 et s'il est égale à false alors je traite le clique. Le mouseEnable me semble assez restreint comme méthode dans ce cas là.

PS pour Nat' : J'me suis mal exprimé, j'entendais " capté par "


monDic[monEnfant] = false;
...

function action(e:MouseEvent):void{
           if(!monDic[e.currentTarget]){
                         monDic[e.currentTarget] = true;
                        //traitement ....
           }
}
 

Word hard, play hard.

#11 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 639 messages

Posté 10 February 2013 - 15:19 PM

Je pensais l'avoir publié en CS5, désolé, voilà qui est fait.

Fichier(s) joint(s)

  • Fichier joint  Test.fla   9.54 Ko   11 téléchargement(s)


#12 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 10 February 2013 - 15:53 PM

yop !

gagné ;)

Voir le messageNataly, le 10 February 2013 - 13:03 PM, dit :

[…]je parierais bien qu'image 2 c'est une autre cible. Trace pour voir…

donc ceci expliqué, reste à afaire en sorte que tu n'interceptes (entendes) le clic que si c'est un enfant du contenant.
Et c'est là qu'on est content d'avoir recours à la phase de capture (tout bien expliquée sur lien plus haut ocazou)

clavO.addEventListener(MouseEvent.CLICK, action,true);
function action(e:MouseEvent):void {
    trace(e.target.name);
    trace( e.target.parent);
    e.target.parent.mouseEnabled = false;
    e.target.parent.gotoAndStop(2);
    vtO++;
    VtO.text = String(vtO);
}

;)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#13 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 639 messages

Posté 10 February 2013 - 18:00 PM

Oui, t'es la meilleur Nataly ;-)!

Ca fonctionne à condition de notifier ... action, true); et de ne pas m'être la charrue avant les boeufs, c'est à dire d'user le "mouseEnabled" avant de placer la cible en frame 2 sinon ça ne fonctionne pas.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)