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

Flex Discussion :

Propager le clic de souris à tous les boutons d'un container


Sujet :

Flex

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 25
    Points : 24
    Points
    24
    Par défaut Propager le clic de souris à tous les boutons d'un container
    Bonjour,

    J'ai un container (box, canvas, n'importe quel container) qui contient plusieurs boutons se chevauchant les uns les autres. J'aimerais que le clique de la souris soit capturé par tous les boutons sous le pointeur et pas seulement le premier.

    Auriez-vous une idée si cela est possible et si oui, vers quoi je devrais m'orienter pour arriver à mes fins.

    Merci =)

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Salut,

    Si tu places un eventListener sur ton clic de souris, au niveau du container ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monContainer.addEventListener(MouseEvent.CLIC, maFonction);

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    J'aimerais limiter les traitements dans le container autant que cela puisse se faire.
    En faite, il faudrait que le container propage l'évènement à tous ses enfants et pas seulement au premier visible.

    Pour être plus claire, dans l'exemple ci-dessous, quand je clique sur la surface qui recouvre le bouton "titi" et le bouton "toto", j'aimerais que les deux envoie une alerte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600">
    	<mx:Canvas>
    		<mx:Button id="toto" width="200" height="200" x="0" y="0" click="totoClickHandler(event)"/>
    		<mx:Button id="titi" width="200" height="200" x="100" y="100" click="titiClickHandler(event)"/>
    	</mx:Canvas>
     
    	<mx:Script>
    		<![CDATA[
    			import mx.controls.Alert;
     
    			public function totoClickHandler(event:MouseEvent):void
    			{
    				Alert.show("toto");
    			}
     
    			public function titiClickHandler(event:MouseEvent):void
    			{
    				Alert.show("titi");
    			}
    		]]>
    	</mx:Script>
    </mx:Application>

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Points : 111
    Points
    111
    Par défaut
    Au premier abord, j'aurais dis comme Krazymins.

    Mais en fait, c'est plus compliqué que ça.
    SI j'ai bien compris, si l'utilisateur clique sur titi, il faut pouvoir exécuter "titiClickHandler", s'il clique sur toto il faut exécuter "totoClickHandler".
    Mais si l'utilisateur clique sur l'intersection des deux boutons, il faut que les deux méthodes soient appelées (et donc deux dispatches d'événements).

    ça me parait un peu chaud car dans tous les cas, un seul bouton sera réellement actionné, l'autre étant en dessous je suppose.

    Il n'existe pas une méthode pour récupérer les composants par des coordonnées ?

    Dans tous les cas, les coordonnées pourraient peut-être t'aider, c'est moche mais bon.
    http://livedocs.adobe.com/flex/3/htm...s_intro_5.html

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Effectivement, le problème est assez compliqué. Il me semble que seul le premier composant visible récupère l'évènement (celui au dessus de la pile).

    Sinon parallèlement aux coordonnées comme le suggérait Fichman, tu peux peut être créer un composant invisible au dessus de la zone commune aux deux boutons. (en fait c'est ni plus ni moins qu'une matérialisation de la solution de Fichman), et tu mets un listener sur ce composant.

    Par exemple si tu dessines un rectangle, ca devrait pouvoir le faire

    A voir ce qui est le moins sale...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Merci pour vos réponses =)

    La solution la plus propre semble de recréer un container (sous classement de Box, Container, voir de UIComponent). Utiliser un "calque" au dessus des autres composants qui va simuler le comportement voulu en utilisant les méthode de positionnement de chaque composant.

    Ça à l'air chaud comme ca ^^'

    En faite, je pensais que Flex avait une solution existante à ce problème, je vais donc prendre le problème global sous un autre angle.

    En tout cas, encore merci pour vos réponses.

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

Discussions similaires

  1. Sélectionner tous les boutons et les mettre enabled
    Par guimo26 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/09/2008, 18h35
  2. Réponses: 4
    Dernier message: 06/05/2008, 14h05
  3. Suppression de tous les boutons de commandes d'une feuille
    Par e040098k dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/01/2008, 19h13
  4. [VBA-E] Parcourir tous les boutons d'une feuille
    Par striky2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2006, 08h51
  5. Réponses: 4
    Dernier message: 29/09/2005, 11h50

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