Erreur Flex sur l'événement personnalisé simple quand Mis en œuvre en Actionscript (mais pas MXML)

StackOverflow https://stackoverflow.com/questions/3865673

  •  28-09-2019
  •  | 
  •  

Question

Je suis en train d'apprendre comment utiliser des événements personnalisés dans Flex.

je suis tutoriel Oliver Merk trouvé ici: Blog

L'événement personnalisé fonctionne si je mets en œuvre à l'aide de MXML dans l'application principale. Mais, si j'utilise actionscript, j'obtiens l'erreur 1119:. L'accès de la propriété ADD_PRODUCT peut-être définie par une référence à la classe de type statique

Mon événement: Dans le sous-répertoire des événements, j'ai:

package events {

   import flash.events.Event;

   public class AddProductEvent extends Event {

      public var productName:String;

      public function AddProductEvent( type:String, productName:String ) {

         super( type );
         this.productName = productName;

      }

      override public function clone():Event {
         return new AddProductEvent( type, productName );
      }

   }
}

Dans le composant, j'ai un RadioButtonGroup

<mx:RadioButtonGroup id="choicesRadioButtonGroup" itemClick="onButtonClick()"/>



private function onButtonClick():void {
            var myEventObj:Event = new AddProductEvent("addProduct", "Flex T-shirt");
            dispatchEvent(myEventObj);
        } 

Ce sont les métadonnées dans le composant et la déclaration d'importation:

<mx:Metadata>
    [Event (name="addProduct", type="events.AddProductEvent")]
</mx:Metadata>

import events.AddProductEvent;

Dans l'application principale, j'ai:

import events.AddProductEvent;

private function onAddProduct( event:AddProductEvent ):void {
mx.controls.Alert.show('Attached data was ' + event.productName);
}

Si je mets en œuvre le composant dans l'application principale comme ceci:

<visualcomponent:PopWindow addProduct="onAddProduct(event)" />

alors tout fonctionne.

Si je mets en œuvre le composant dans l'application principale dans actionscript comme ça, je reçois une erreur:

public function clickHandler2(event:MouseEvent):void {

    if(event.currentTarget.selected){popWindow = new PopWindow;
        queryBuilder(event.currentTarget);
        PopUpManager.addPopUp(popWindow, my_view, false);
        PopUpManager.centerPopUp(popWindow);

            popWindow.addEventListener(AddProductEvent.ADD_PRODUCT, onAddProduct);}

    }

J'obtiens l'erreur sur la ligne addEventListener. Qu'est-ce que je fais mal? Un conseil?

Merci.

-Laxmidi

Était-ce utile?

La solution

Votre classe AddProductEvent ne semble pas exposer une chaîne statique publique appelée ADD_PRODUCT qui a la valeur « addProduct » qui est ce qu'il semble que vous essayez de faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top