Error en Flex simple evento personalizado cuando se implementa en ActionScript (pero no en MXML)
-
28-09-2019 - |
Pregunta
Estoy tratando de aprender a utilizar los eventos personalizados en Flex.
El tutorial deEstoy siguiendo Oliver Merk encontrar aquí: Blog
El evento personalizado funciona si pongo en práctica utilizando MXML en la aplicación principal. Pero, si uso actionscript, entonces me sale error 1119:. El acceso de la propiedad ADD_PRODUCT posiblemente no definido mediante una referencia con tipo estático Clase
Mi Evento: En el subdirectorio eventos, Tengo:
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 );
}
}
}
En el componente, tengo una RadioButtonGroup
<mx:RadioButtonGroup id="choicesRadioButtonGroup" itemClick="onButtonClick()"/>
private function onButtonClick():void {
var myEventObj:Event = new AddProductEvent("addProduct", "Flex T-shirt");
dispatchEvent(myEventObj);
}
Se trata de los metadatos en el componente y la declaración de importación:
<mx:Metadata>
[Event (name="addProduct", type="events.AddProductEvent")]
</mx:Metadata>
import events.AddProductEvent;
En la aplicación principal, tengo:
import events.AddProductEvent;
private function onAddProduct( event:AddProductEvent ):void {
mx.controls.Alert.show('Attached data was ' + event.productName);
}
Si puedo implementar el componente principal en la aplicación de la siguiente manera:
<visualcomponent:PopWindow addProduct="onAddProduct(event)" />
A continuación, todo funciona.
Si puedo implementar el componente principal en la aplicación en ActionScript como esta, entonces me da un error:
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);}
}
Me sale el error en la línea addEventListener. ¿Qué estoy haciendo mal? Cualquier consejo?
Gracias.
-Laxmidi
Solución
Su clase AddProductEvent no parece exponer una llamada ADD_PRODUCT cadena estática pública que tiene el valor "addProduct", que es lo que parece que está tratando de hacer.