Flex: проблема с созданием экземпляра компонента mxml - PullRequest
0 голосов
/ 11 января 2010

У меня есть два mxml-файла в проекте flex: Но когда я отслеживаю a.cBtn, он становится пустым. Почему это должно быть?

test.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="runIt()">
<mx:Script>
 <![CDATA[
  public function runIt():void
  {
   var a:abc = new abc();
   trace(a.cBtn);//a.cBtn is null here
  }
 ]]>
</mx:Script> 
</mx:Application>

И, abc.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
 <mx:Button x="108" y="73" label="Button" id="cBtn"/>

</mx:Canvas>

Ответы [ 2 ]

0 голосов
/ 15 января 2010

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

Это довольно уродливо, но если вам абсолютно необходимо получить доступ к дочерним элементам компонента, прежде чем вы захотите добавить этот компонент в список отображения, вы можете вызвать "initialize ()" для вашего контейнера.

public function runIt():void
{
    var a:abc = new abc();
    trace(a.cBtn);//a.cBtn is null here
    a.initialize();
    trace(a.cBtn);//a.cBtn is not null here
}
0 голосов
/ 11 января 2010

Вам нужно дождаться события creationcomplete.

public function runIt():void 
{ 
    var a:abc = new abc(); 
    a.addEventListener(FlexEvent.CREATION_COMPLETE, traceIt)
    trace(a.cBtn);//a.cBtn is null here 
} 
private function traceIt(e:Event):void
{
    trace(a(e.target).cBtn)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...