IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 1 & ActionScript 2 Discussion :

répérage de la souris dans une arbo de Movie-Clip


Sujet :

ActionScript 1 & ActionScript 2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Par défaut répérage de la souris dans une arbo de Movie-Clip
    Au sujet des fonctions action-script 'OnMouse'.
    J'ai rencontré un problême de hiérarchie.

    Voici un exemple :
    Je place un MovieClip que je nomme "parent", j'y insère une sous-MovieClip que je nomme "enfant".
    Dans "parent" je place onRollOut = fonction{<instructions;>}
    Dans "enfant" je place onRollOver = fonction{<instructions;>}

    Résumé :
    . . . . MovieClip "parent" => parent.onRollOut=function( ){<affiche dans un premier texte le mot "parent>}
    . . . . . . . |---- MovieClip "enfant => enfant.onRollOver=function(){<afficher dans un second texte le mot "enfant">}


    Résultat : lors du survole 'enfant, le texte 'enfant' ne s'affiche pas (dans le texte réservé à enfant).
    Le MovieClip 'Parent' semble cacher "enfant" à la souris.

    Je croyais qu'il n'y avait pas de solution à cela

    Merci d'avance.

    Destrumel

  2. #2
    Membre expérimenté Avatar de aorgerit
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 257
    Par défaut
    Bonjour,

    Tu fais le mélange entre la souris, qui est un objet, et le bouton, qui est un autre objet.
    Et cela est applicable dès F5, puisque nous reprenons^partiellement le fil d'une autre discussion.

    Dans ton cas du disposes d'un objet nommé "parent".

    tu lui applique le code parent.onRollOut=...

    pour son enfant, tu lui dis un autre code, no problemo toujours.
    enfant.onRollOver...

    Là tu constate, je te cite :
    Le MovieClip 'Parent' semble cacher "enfant" à la souris

    hé oui, c'est confirmé, à compter du moment où ton clip "parent" prend la priorité de profondeur sur son objet "enfant".

    Plus précisément "parent" contient "enfant", de fait en pure théorie, parent contient enfant donc la priorité du code se fait sur "parent" et non "enfant" puisque le parent.onparent.onRollOut signifie que l'enfant EST présent.

    Encore une histoire de famille ça.

    Pour ma part j'aurais inversé, ce qui me semble plus logique dans le cadre d'un menu , je pense :
    parent.onRollOver
    et :
    enfant.onRollOut.

    Bien à toi.

  3. #3
    Membre expérimenté Avatar de aorgerit
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 257
    Par défaut
    complément.

    j'ai oublié un truc peut être ,

    Considère au niveau compréhension flash un bouton comme un équivalent d'un movieClip auquel on associe un enterFrame ( dur d'usine ) avec la position de la souris.
    En conséquence il faut utiliser un movieClip.hitTest(...).
    Si c'est "true" tu es dessus , si c'est "false" tu n'es pas dessus.
    On fait la même chose en flash6 avec un MovieClip et Mouse.Show et Mouse.Hide, une fois les conditions "true/false" résolues.

    Bien à toi.

  4. #4
    Membre averti

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Par défaut
    Bonsoir,

    Citation Envoyé par aorgerit
    Plus précisément "parent" contient "enfant", de fait en pure théorie, parent contient enfant donc la priorité du code se fait sur "parent" et non "enfant" puisque le parent.onparent.onRollOut signifie que l'enfant EST présent.
    Cela signie que ce n'est pas possible. Il n'y a vraiment aucun moyen ?

    Citation Envoyé par aorgerit
    priorité du code
    Je ne connais pas ce concept. Qu'est-ce que c'est et à quoi ça sert.

    Merci pour tes explications.

    Destrumel

    PS : OK, j'ai lu le HitTest(), malheureusement, il faudrait aussi que je sache si, à la position de la souris, mon MovieClip est caché un autre objet.

  5. #5
    Membre émérite
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Par défaut
    Salut,

    La priorité du code, c'est la hiérarchie dans laquelle est exécuté le code : du clips le plus haut (le _root) au plus bas. Le problème étant que dans Flash 8, la gestion événementielle (srutout pour la souris) est mal fait et de ce fait si ton clip parent à une action onXXX (relative à la souris), les enfants ne reçevront pas l'événement
    Notez que ceci a été complètement chamboulé en AS3 et que maintenant grâce au BubbleEvent, tout cela est parfaitement géré

    @++

  6. #6
    Membre averti

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Par défaut
    Citation Envoyé par thecaptain
    La priorité du code, c'est la hiérarchie dans laquelle est exécuté le code : du clips le plus haut (le _root) au plus bas.
    Le code décrète que la souris pointe un movieclip avant d'avoir vérifié si elle survolait un des composants du movieClip ?
    Je ne comprends pas bien.

    Citation Envoyé par thecaptain
    Le problème étant que dans Flash 8, la gestion événementielle (srutout pour la souris) est mal fait et de ce fait si ton clip parent à une action onXXX (relative à la souris), les enfants ne reçevront pas l'événement
    OK, pour AS2, c'est une confirmation

    Citation Envoyé par thecaptain
    Notez que ceci a été complètement chamboulé en AS3 et que maintenant grâce au BubbleEvent, tout cela est parfaitement géré
    Deux questions :
    1 - Est-ce que l'AS3 fonctionne sur Linux,
    2 - où puis-je trouver des infos sur le 'BubbleEvent' et le repérage souris( aucune aide trouvée sur Google)

    Merci de votre aide.

    Phildes

  7. #7
    Membre émérite
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Par défaut
    Salut,

    Deux questions :
    1 - Est-ce que l'AS3 fonctionne sur Linux,
    2 - où puis-je trouver des infos sur le 'BubbleEvent' et le repérage souris( aucune aide trouvée sur Google)
    - ta 1ère question ne veut rien dire : AS3, c'est le langage, à la publication cela reste un .swf Et Adobe a mis au point un Flash Player 9 pour linux il me semble, donc aucun souci de ce coté-la !
    - le BubbleEvent, tu trouveras des informations sur le le blog de petepx, celui d'ekameleon et encore à plein d'endroit Mais pour comprendre le fonctionnement, mieux vaut faire un essaie. Et pour l'avoir fait, je peux te dire que ca marche du tonnerre

    Le code décrète que la souris pointe un movieclip avant d'avoir vérifié si elle survolait un des composants du movieClip ?
    Je ne comprends pas bien.
    Ce qui se passe, c'est que Flash sait ou on a clické sur la scène, il envoie donc l'événement au _root. S'il n'y a pas d'action onXXX, alors il l'envoie au clip contenu dans le _root, le plus devant (donc avec la pronfondeur la plus grande). Si celui-ci n'a pas de onXXX alors, il fait pareil jusqu'a ce qu'il trouve le bon event et s'arrete ! Ce qui pose évidemment d'énormes problème pour les menus et autre (enfin y a des solutions ).

    @++

  8. #8
    Membre averti

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Par défaut
    Citation Envoyé par thecaptain
    Salut,

    La priorité du code, c'est la hiérarchie dans laquelle est exécuté le code : du clips le plus haut (le _root) au plus bas. Le problème étant que dans Flash 8, la gestion événementielle (srutout pour la souris) est mal fait et de ce fait si ton clip parent à une action onXXX (relative à la souris), les enfants ne reçevront pas l'événement
    Notez que ceci a été complètement chamboulé en AS3 et que maintenant grâce au BubbleEvent, tout cela est parfaitement géré

    @++
    OK vu :
    http://livedocs.macromedia.com/flex/...27.html#118998

    Je me plonge là-dedans. je pense que Falsh est en train de remonter très très vite sont retard

    Merci beaucoup pour votre aide.

    Phildes

  9. #9
    Membre émérite
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Par défaut
    Salut,

    Citation Envoyé par Destrumel
    je pense que Falsh est en train de remonter très très vite sont retard
    oui c'est ce que donne l'impression de ce nouveau langage maintenant faudra voir ce que Flash 9 nous réserve ! C'est en bonne voie en tout cas

    @++

  10. #10
    Membre expérimenté Avatar de aorgerit
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 257
    Par défaut
    Bonjour,

    [QUOTE=thecaptain]
    la gestion événementielle (srutout pour la souris) est mal fait et de ce fait si ton clip parent à une action onXXX (relative à la souris), les enfants ne reçevront pas l'événement
    QUOTE]


    La gestion, évènementielle ou séquentielle, fonctionne parfaitement autant pour la souris que pour le reste.
    Ce n'est q'une question d'organisation, et là seuls le papier et le crayon peuvent aider.


    Bien à toi

  11. #11
    Membre émérite
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Par défaut
    Citation Envoyé par aorgerit
    Bonjour,
    Salut,

    Citation Envoyé par thecaptain
    la gestion événementielle (srutout pour la souris) est mal fait et de ce fait si ton clip parent à une action onXXX (relative à la souris), les enfants ne reçevront pas l'événement

    La gestion, évènementielle ou séquentielle, fonctionne parfaitement autant pour la souris que pour le reste.
    Ce n'est q'une question d'organisation, et là seuls le papier et le crayon peuvent aider.


    Bien à toi
    Je suis pas tout à fait d'accord avec toi Ayant un préférence pour Java (tout en adorant aussi le C++), je trouve que dans flash, la gestion des événements style 'click de souris' n'est pas très bien conçue du au fait justement que tu doive utiliser un certain type d'arborescance de tes clips (je dis pas que cela ne marche pas, mais que c'est contraignant). Si je me place par rapport à l'AS3, cela nous permettra d'avoir une structure de MovieClip beaucoup plus propre lorsque l'on fera des menus car justement nous ne somme pas limité à cause de la hiérarchie événementielle, c'est pour cela que je dit 'male faite'. Maintenant il ne faut pas prendre cela au pied de la lettre non plus On trouve toujours des solutions de contournement ^^

    Quant au papier-crayon, je suis entièrement d'accord, pour faire quelque chose de professionnel, c'est indispensable !

    @++

  12. #12
    Membre averti

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Par défaut
    Bonsoir,

    Pour moi, ce sujet est [résolu]

    Merci très sincèrement à chacun de vous, tout spécialement à aorgerit et Thecaptain, tu temps que vous avez accordé à me répondre et à m'aider.

    Je repars avec une foule d'information. Tout ce que j'attendais depuis 5 ans.

    Je vais suivre ton conseil TheCaptain.

    Avec tous mes voeux pour un bel avenir pour Flash

    Destrumel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bloquer le curseur de la souris dans une zone
    Par Andalor dans le forum IHM
    Réponses: 9
    Dernier message: 02/11/2017, 10h42
  2. [HTML] Désactiver roulette de souris dans une liste
    Par nickoko dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 25/07/2006, 16h24
  3. Réponses: 10
    Dernier message: 14/05/2006, 16h14
  4. [C#] utilisation de la souris dans une windows form
    Par dimmak dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/03/2006, 23h21
  5. Selection avec la souris dans une zone de texte
    Par GESCOM2000 dans le forum IHM
    Réponses: 8
    Dernier message: 11/02/2006, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo