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 :

event listener useWeakReference


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Par défaut event listener useWeakReference
    slt
    j'ai un petit soucis avec un listener :

    j'ai un canvas nomé "myCanvas"; sur un click bouton en dehors du canvas j'ajoute un ecouteur sur myCanvas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private function monClick(event:MouseEvent)
    {
     
         myCanvas.addEventListener(MouseEvent.CLICK,onClickMask,true,0,true);
    }
    je prend soin de passer useWeakReference a true pour refrence faible;

    dans ma function ecouteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private function onClickMask(event:MouseEvent):void
    {
       //traitement .........
     
       myCanvas.removeEventListener(MouseEvent.CLICK,onClickMask,true)
     
    }
    lorsque je click de nouveaux sur un enfant de mon canvas la function est executée, alors que j'ai supprimer l'ecouteur, et que je ne l'ai pas réactivé avec mon bouton .
    je pensait qu'avec useWeakReference a true je serait débarrasé de cette persistance mais ce n'ai pas le cas ....

    merci
    A+

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Par défaut event listener useWeekReference
    slt
    ca marche
    j'ai commis une petite erreur , qui n'existe pas dans le post.

    en effet lors de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myDisplayObjectContainer.removeEventListener(MouseEvent.CLICK,onClickMask,true);
    j'avais oublié le true pour le useWeakReference dans le remove donc n'ayant pas exactement le meme signature que le addeventlistener il ne supprimait pas l'écouteur.
    enfin je suppose que l'explication est là

    A+

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Attention la différence de signature n'a rien à voir avec l'option useWeakReference.

    En effet le paramètre supplémentaire correspond à useCapture qui affecte la phase concernée par la propagation des événements.

    L'option useWeakReference=true autorise le GC à libérer un objet même s'il existe des listener associés.

    L'option useCapture permet de préciser si le listener est enregistré pour être activé lors de la phase "capture" ou lors des phases "bubbling" et "target".

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

Discussions similaires

  1. Events, listener etc.
    Par guynemer dans le forum ActionScript 3
    Réponses: 22
    Dernier message: 12/03/2010, 06h21
  2. Ajouter dynamiquement un event listener
    Par Jexou dans le forum Flex
    Réponses: 13
    Dernier message: 26/08/2009, 14h41
  3. Checked box + Event listener click
    Par Tiolebucheron dans le forum Ext JS / Sencha
    Réponses: 4
    Dernier message: 17/07/2009, 16h15
  4. Réponses: 59
    Dernier message: 09/11/2007, 17h02
  5. Mettre une methode dans un event listener
    Par FidoDido® dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/07/2006, 21h23

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