Показать сообщение отдельно
Старый 21.02.2012, 05:17
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 1  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
По умолчанию При добавлении MXML компонента в контейнер, нельзя обратиться к его дочерним объектам

Здравствуйте, есть простенький MXML компонент на основе SkinnableContainer:

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<s:SkinnableContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
		  xmlns:s="library://ns.adobe.com/flex/spark"
		  styleName="mySkin"
		  addedToStage="init()">
 
	<s:states>
		<s:State name="active"/>
		<s:State name="inactive"/>
	</s:states>
 
	<fx:Script>
		<![CDATA[
			import spark.components.Button;
 
			public var selectButton:Button = new Button;
			public var closeButton:Button = new Button;
 
			private function init():void
			{
				selectButton.styleName = 'SelectButton';
				closeButton.styleName = 'CloseButton';
				this.addElement(selectButton);
				this.addElement(closeButton);
			}
		]]>
	</fx:Script>
 
	<!--
	<s:Button id="selectButton" includeIn="active, inactive" styleName="SelectButton" />
	<s:Button id="closeButton" includeIn="active" styleName="CloseButton"/>
	-->
</s:SkinnableContainer>
Как видно, AS3 код добавляет две кнопки. Тоже самое делается ниже через mxml синтаксис(закоментировано). При добавлении этого компонента где-либо в программе, мне нужно тут же обратиться к его дочерним объектам, то бишь кнопкам.
Если использовать mxml синтаксис, то при обращении к кнопке, вылетает ошибка:"Cannot access a property or method of a null object reference". Если использовать AS3, то все работает ок. Вердикт в том, что кнопки, добавленные через mxml синтаксис, не успевают инициализироваться на момент обращения к ним извне.

Проблема заключается в том, что мне нужно в данном компоненте использовать, как раз mxml, поэтому хотелось бы как-то обойти этот нюанс.
Заранее благодарен за любой совет или помощь.


Последний раз редактировалось Acrossfy; 21.02.2012 в 05:22.