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

  1. #1
    Membre du Club

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Points : 46
    Points
    46
    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 averti 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
    Points : 301
    Points
    301
    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 averti 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
    Points : 301
    Points
    301
    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 du Club

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Points : 46
    Points
    46
    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 éprouvé
    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
    Points : 1 210
    Points
    1 210
    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é

    @++
    Libzippp (C++)
    Lost in AStorm

  6. #6
    Membre du Club

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Points : 46
    Points
    46
    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 éprouvé
    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
    Points : 1 210
    Points
    1 210
    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 ).

    @++
    Libzippp (C++)
    Lost in AStorm

  8. #8
    Membre du Club

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par thecaptain
    Salut,
    - ta 1ère question ne veut rien dire :
    Désolé de dire des sottises
    je croyais sottement que la version 8 n'était pas compatible Linux, mais la 8.5 le serait... (La 8.5 ??? )
    Sinon, j'avais sottement lu ceci
    http://www.media-box.net/index.php/2...r-9-pour-linux

    Citation Envoyé par thecaptain
    - le BubbleEvent, tu trouveras des informations sur le le blog de petepx
    Il ne veut pas m''ouvrir la porte

    Citation Envoyé par thecaptain
    , celui d'ekameleon
    J'ai fait une recherche "BubbleEvent"

    Citation Envoyé par thecaptain
    et encore à plein d'endroit Mais pour comprendre le fonctionnement, mieux vaut faire un essaie.
    C'est effectivement ce que j'aurais aimé faire, dès que je trouve une doc accessible sur Internet.

    Merci de votre aide je vais essayer de touver ça.

    Destrumel

  9. #9
    Membre du Club

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Points : 46
    Points
    46
    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

  10. #10
    Membre éprouvé
    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
    Points : 1 210
    Points
    1 210
    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

    @++
    Libzippp (C++)
    Lost in AStorm

  11. #11
    Membre du Club

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

    D'après ce que j'ai compris le balayage du Bubbling ne s'arrète pas quand il a trouvé le 1er élément pointé par la souris.

    J'ai vu qu'il fallait que la pièce pointée indique d'arrêter le balayage.

    Il n'y a pas de moyen automatique pour arrêter le balayge au 1er composant trouvé ? (Ensuite on remonte le Bubbling et c'est terminé)

    Phildes

  12. #12
    Membre éprouvé
    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
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    regarde du coté de la méthode cancel de l'événement... maintenant si l'événement n'est pas "cancelisable", alors ce n'est pas possible. Mais pourquoi cela te gène-t-il ?

    @++
    Libzippp (C++)
    Lost in AStorm

  13. #13
    Membre du Club

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

    Citation Envoyé par thecaptain
    regarde du coté de la méthode cancel de l'événement...
    Merci beauoup pour ton aide. j'ai effectivement besoin de tout vérifier.
    Même si cette piste semble mener à une impasse, il était important de la suivre :
    "Cancelling the default behavior has no effect on the progress of an event object through the event flow"

    alors ce n'est pas possible. Mais pourquoi cela te gène-t-il ?

    @++
    Dans la suite de la discusion du "l'avenir de Flash", je recherche le moyen d'automatiser le système.
    Il faut vérifier les pièces qui passent au dessus des autres, et les cachent ainsi à la souris,
    '
    ----------------------
    Exemple : l'anim comporte un menu et d'autres pièces. Une de ses pièces survole mon menu.

    Pour le Wysiwyg, la souris pointera sur la pièce-qui-survole' et non sur le menu (puisqu'il est 'caché' par une autre pièce)
    A priori, dans une animation, toutes les pièces peuvent survoler.

    En conséquence, il faudrait mettre 'Event.stopPropogation()' dans toutes les pièces.
    -----------------------

    Si le comportement (arrêt-automatique-à-la-1ère-occurence-rencontrée) n'est pas encore intégré à Flash, ce n'est pas très grave.
    Cela ne demande que peu de modification - un flag qui fait remonter le bubbling + arrêter le balayage.

    Et enfin, pour être nickel, proposer à l'utilisateur de choisir le comportement par défaut qu'il souhaite : "Wysiwyg" ou ""pièces-transparente-à-souris"

    ----------------------

    Avec le bubbling, Falsh a fait le plus gros du travail. C'est dommage de s'arrêter si près du but
    Si ça l'option "arrêt-automatique-à-la-première-occurence-valide" n'est pas encore implémenté dans Flash, on peut peut-être essayer de leur transmettre l'idée.
    Pour un tout petit investissemnt, Ca évite de traîner une casserole (A ce niveau, si un géant de l'informatique se réveille et cherche à placer un éditeur concurrent, chaque détail peut compter)

    ------------------------

    Existe-t-il un moyen officiel pour transmettre cette suggestion (une sorte de boîte-à-idées) chez Adobe ?

    Rappel des idées :
    1 - Option pour les évenement suivant le bubbling : arrêt-automatique-à-la-première-occurence-valide (objectif : se conformer au Wysiwyg)
    2 - Option par défaut pour toute l'anim, proposée à l'utilisateur : "respect du Wyswiwyg" ou "pièces transparentes à la souris" (objectif : laisser le choix à l'utilisateur, plutôt que la contrainte)

    Merci de ton aide. J'ai enfin pu réellement avancer dans ce problème de reconnaissance souris dans Flash.

    Destrumel

  14. #14
    Membre éprouvé
    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
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    mmmh je ne peux pas vraiment t'aiguiller comme ça, je n'ai pas encore assez fouiné la-dedans. Mais par contre tu peux trouver une solution de rechange : tu crée un Event qui a une propriét isCanceled() et si oui, alors dans tes écouteurs, tu ne fait rien non ?

    Sinon pour les suggestions, je pense qu'il faut aller sur les forums adobe

    @++
    Libzippp (C++)
    Lost in AStorm

  15. #15
    Membre averti 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
    Points : 301
    Points
    301
    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

  16. #16
    Membre éprouvé
    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
    Points : 1 210
    Points
    1 210
    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 !

    @++
    Libzippp (C++)
    Lost in AStorm

  17. #17
    Membre du Club

    Inscrit en
    Septembre 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 29
    Points : 46
    Points
    46
    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