Llevo mucho tiempo dandole vueltas para crear un popUp a partir de un custom component con un textInput. He conseguido crear popUp a partir de custom components de ChecksBox y rank sim problema alguno pero al crearlo de un textInput y ejecutarlo, al pulsar sobre el textInput para introducir texto me salta el dichoso error
TypeError: Error #1009: Cannot access a property or method of a null object reference.
He probado hacerlo en modo vista pero no me sirve y ya estoy desesperándome. He leido que en ocasiones se crea la referencia antes que el objeto y causa errores, no se si van por ahi los tiros. Encima del error no puedo sacar nada en claro...
La llamada desde la vista ppal
Código ActionScript :
public function getTexto():void { //crear el popup var textoVar: TextPicker = new TextPicker(); textoVar.addEventListener(TextPickerEvent.TEXT_PICKER_SET, onTextoSet); textoVar.addEventListener(TextPickerEvent.TEXT_PICKER_CANCEL, onTextoCancel); PopUpManager.addPopUp(textoVar, this, true); } private function onTextoSet(event:TextPickerEvent): void { datoUsuario1 = event.textValue as String; nodoEditado = nodoEncontrado.nodeName; onTextoCancel(event); } private function onTextoCancel(event:TextPickerEvent): void { var textoItemVar:TextPicker = event.target as TextPicker; textoItemVar.removeEventListener(TextPickerEvent.TEXT_PICKER_SET, onTextoSet); textoItemVar.removeEventListener(TextPickerEvent.TEXT_PICKER_CANCEL,onTextoCancel); } //TextPickerEvent.as package components { import flash.events.Event; public class TextPickerEvent extends Event { public static const TEXT_PICKER_SET: String = 'textPickerSet'; public static const TEXT_PICKER_CANCEL: String = 'textPickerCancel'; public var textValue: String; public function TextPickerEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) { super(type, bubbles, cancelable); } } }
TextPicker.mxml
Código :
<?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" width="444" height="236"> <fx:Script> <![CDATA[ import mx.managers.PopUpManager; [Bindable] public var textValue:TextInput; private function setText():void { var dateObjects:SharedObject; var dpe1:TextPickerEvent = new TextPickerEvent(TextPickerEvent.TEXT_PICKER_SET); dpe1.textValue = userText.text; dispatchEvent(dpe1); PopUpManager.removePopUp(this); trace("** Valor introducido: " + userText.text); // Guardo en el directorio la fecha y hora introducida try{ dateObjects = SharedObject.getLocal("datosGuardados"); } catch(error:Error){ trace("SharedObject Error: No existe el directorio y no se puede crear uno nuevo."); return; } dateObjects.data.text=userText.text; dateObjects.flush(); } private function cancelText():void { PopUpManager.removePopUp(this); } ]]> </fx:Script> <s:TextInput id="userText" x="1" y="71" width="100%"/> <s:Button x="10" y="167" width="200" height="60" label="Aplicar" click="setText()" fontSize="20"/> <s:Button x="237" y="170" width="200" height="60" label="Cancelar" click="cancelText()" fontSize="20"/> </s:Group>
Me estoy volviendo loco

saludos
Alvaro