Ссылка на нулевой объект после создания объекта - PullRequest
0 голосов
/ 22 августа 2011

У меня есть один файл MXML как

<objecthandles:ObjectHandles xmlns:fx="http://ns.adobe.com/mxml/2009"                            xmlns:s="library://ns.adobe.com/flex/spark"  backgroundAlpha="1"                            xmlns:mx="library://ns.adobe.com/flex/mx"
allowRotate="true" minHeight="25" minWidth="60" height="100" width="200">

<s:BorderContainer  id="borderCon" width="100%" height="100%" minHeight="25" minWidth="60" 
                        backgroundAlpha="0" borderVisible="false" borderAlpha="0">
         <s:HGroup id="hgText" width="100%" height="100%" gap="0" >
            <mx:TextArea id="txtAdd" width="100%" height="100%" color="black" 
                         minHeight="25" minWidth="60" horizontalScrollPolicy="off" verticalScrollPolicy="off" focusOut="txtAddKeyUpHandler(event)"  
                         keyUp="txtAddMirrorKeyUpHandler(event)"
                         creationComplete="onTextCreationComplete()" />
        </s:HGroup>
</s:BorderContainer>

</objecthandles:ObjectHandles>

Когда я создаю объект файла *

var txtElement: TextElement = new TextElement ();txtElement.txtAdd.text = "Hello";

Затем он показывает нулевую ссылку на объект, что txtElement.txtAdd кажется нулевым

Требуется идеальное решение?

1 Ответ

1 голос
/ 22 августа 2011

Подкомпоненты жизненного цикла компонента Flex не будут созданы, пока родительский компонент не будет добавлен в список отображения. Только когда компонент будет добавлен в список отображения и полностью встроенным, вы сможете получить доступ к его подкомпонентам. Когда компонент полностью готов к использованию, он отправляет событие FlexEvent.CREATION_COMPLETE.

Так что сделайте что-то вроде этого:

var txtElement:TextElement = new TextElement();
txtElement.addEventListener(FlexEvent.CREATION_COMPLETE, initTxtElement);
addElement(txtElement);

private function initTxtElement(event:FlexEvent):void {
    txtElement.txtAdd.text = "Hello";
}

Или, что еще лучше, поскольку это пользовательский компонент: предоставьте свойство text как свойство TextElement и внутренне обработайте отложенный параметр, чтобы вы могли написать: txtElement.text = "hello".

...