我有一个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>
什么时候我创建了Fileas的对象
var txtElement:TextElement = new TextElement(); txtElement.txtAdd.text =“你好”;
然后显示空对象引用 txtElement.txtAdd似乎为空
需要完美解决方案吗?
答案 0 :(得分:1)
在Flex组件生命周期中,在将父组件添加到displaylist之前,不会创建子组件。只有将组件添加到完全构建的displaylist 和时,您才能访问其子组件。当组件完全可以使用时,它将调度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"
。