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 :

Extend et MouseEvent


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Mai 2008
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 191
    Par défaut Extend et MouseEvent
    Bonjour,

    Voila, j'ai consulter pas mal de doc sur le sujet et j'avoue, je crois que je n'y comprend toujours rien.

    Je voudrais faire un extend de Event ou MouseEvent, me permetant de passer des paramètres personalisé lors d'un click par exemple.

    Voila ce que je fais:

    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
    24
    25
    26
    27
    28
    29
    package myEvent
    {
            import flash.events.Event;
     
            public class SlideEvent extends Event
            { 
            public static const CLICK:String = "click";
     
            public var result:Boolean;
     
            public function SlideEvent(type:String, param1:Boolean, bubbles:Boolean=false, cancelable:Boolean=false)
            {
                    super(type, bubbles, cancelable);
     
                    this.result = param1;
            }
     
     
            public override function clone():Event
            {
                            return new SlideEvent(type, result, bubbles, cancelable);
            }
     
            public override function toString():String
            {
               return formatToString("SlideEvent", "type", "result", "bubbles", "cancelable", "eventPhase");
            }
            }
    }
    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
    24
    25
    26
    27
    28
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init(event)" viewSourceURL="srcview/index.html">
            <mx:Script>
                    <![CDATA[
                    import myEvent.SlideEvent;
                    import mx.controls.alert;
     
     
                    private function init(e:Event):void
                    {
                            bt1.toggle = true;
     
                            addEventListener(SlideEvent.CLICK, eSlide);
                            dispatchEvent(new SlideEvent(SlideEvent.CLICK, true));
                    }
     
     
                    private function eSlide(e:SlideEvent):void
                    {
                            alert.show(String(e.result));
                    }
     
     
                    ]]>
            </mx:Script>
            <mx:Button label="Button 1" id="bt1"/>
    </mx:Application>

    Des que je click sur bt1, il me dit :
    "TypeError: Error #1034: Echec de la contrainte de type : conversion de flash.events::MouseEvent@45180e1 en myEvent.SlideEvent impossible."
    Bon a mon avis c'est une erreur normal, mais comme je ne vois pas comment faire ...

    Merci a vous

  2. #2
    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
    Il doit manquer un truc là, parce que je vois pas où tu associes ton bouton à un événement click...

  3. #3
    Membre très actif
    Inscrit en
    Mai 2008
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 191
    Par défaut
    oui, c'est vrai je l'ai oublié sur la capture, je donne un autre code plus correct, qui de toute donne la même erreur :

    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
    24
    25
    26
    27
    28
    29
    package myEvent
    {
        import flash.events.Event;
     
        public class SlideEvent extends Event
        { 
            public static const CLICK:String = "click";
     
            public var result:Boolean;
     
            public function SlideEvent(type:String, param1:Boolean=false, bubbles:Boolean=false, cancelable:Boolean=false)
            {
                    super(type, bubbles, cancelable);
     
                    this.result = param1;
            }
     
     
            public override function clone():Event
            {
                            return new SlideEvent(type, result, bubbles, cancelable);
            }
     
            public override function toString():String
            {
               return formatToString("SlideEvent", "type", "result", "bubbles", "cancelable", "eventPhase");
            }
    	}
    }
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init(event)" layout="absolute">
            <mx:Script>
                    <![CDATA[
    				import mx.controls.Alert
                    import myEvent.SlideEvent;
     
                    private var evtPerso:SlideEvent = new SlideEvent(SlideEvent.CLICK, false)
     
     
     
                    private function init(e:Event):void
                    {
            				bt1.addEventListener(SlideEvent.CLICK, eSlide);
                    }
     
     
                    private function eSlide(e:SlideEvent):void
                    {
    					Alert.show(String(e.result));
                    }
     
     
                    private function delcenche():void
                    {
            			bt1.dispatchEvent(evtPerso);                	
                    }
     
     
                    ]]>
            </mx:Script>
            <mx:Button label="Button 1" id="bt1"/>
            <mx:Button label="Declenche" x="369" y="298" id="dec" click="delcenche()"/>
    </mx:Application>
    Donne :

    > TypeError: Error #1034: Echec de la contrainte de type*: conversion de myEvent::SlideEvent@4567699 en flash.events.MouseEvent impossible.

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Bonjour,

    je pense qu'il faudrait que la classe hérite de MouseEvent et non de Event.

  5. #5
    Membre très actif
    Inscrit en
    Mai 2008
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 191
    Par défaut
    je pense qu'il faudrait que la classe hérite de MouseEvent et non de Event.
    Je me suis déja fait cette remarque, en fait j'ai déja fait pas mal de test et de recherche, Event ou MouseEvent, il y a toujours des pb qui se posent.

    Si tu me met la solution avec MouseEvent qui marche, moi ca me va ^^

    mais après tous le temps que j'y ai passé la moi, je seche toujours ...

  6. #6
    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
    Il me semble avoir déjà eu ce genre de problème qui était du au fait que les deux classes d'événement utilisaient la même chaîne de caractère pour identifier le type de l'événement.

    Depuis j'utilise des chaînes uniques.

    Tu peux essayer avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static const CLICK:String = "slideclick";

Discussions similaires

  1. [Java2D]MouseEvent sur un paint Graphics g
    Par tahiti bob dans le forum 2D
    Réponses: 9
    Dernier message: 09/10/2004, 22h15
  2. Delete et failed to extend segment
    Par elitost dans le forum Administration
    Réponses: 11
    Dernier message: 15/09/2004, 10h05
  3. Réponses: 7
    Dernier message: 03/08/2004, 16h33
  4. [debutant] [extends]
    Par Shooter dans le forum Langage
    Réponses: 2
    Dernier message: 10/06/2004, 08h53
  5. Problème lors du EXTEND d'un tableau
    Par banana31 dans le forum Oracle
    Réponses: 14
    Dernier message: 10/02/2004, 10h58

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