创建Object后的空对象引用

时间:2011-08-22 10:11:06

标签: flex actionscript-3 flex4

我有一个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似乎为空

需要完美解决方案吗?

1 个答案:

答案 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"