Flex: доступ к MXML из класса
-
03-07-2019 - |
Вопрос
У меня есть класс, который я создаю при завершении создания:
public var catalog : AppCollection = new AppCollection (catalogStrip);
CatalogStrip - это HBox.
В этом классе я создаю VBox и добавляю его в качестве дочернего к catalogStrip. Вот конструктор для указанного класса:
public function AppCollection (_container : HBox) {
this.container = _container;
}
А вот код, с которым у меня проблемы:
public function populate (e : ResultEvent) : void {
var appImage : Image = new Image ();
var appText : Text = new Text ();
var appContainer : VBox = new VBox ();
appImage.source = "./res/Halo.png";
appImage.width = 70;
appImage.height = 70;
appText.text = "Halo 4";
appContainer.width = 110;
appContainer.height = 125;
appContainer.addChild (appImage);
appContainer.addChild (appText);
tbox = appContainer;
this.container.addChild (appContainer);
}
В последней строке написано, что this.container имеет значение null. Невозможно! Я добавил это в конструктор! Кроме того, я также попытался создать экземпляр main.mxml и получить доступ к контейнеру оттуда. Когда я пытаюсь использовать тот же код из тега сценария в main.mxml, он работает, но это убивает весь смысл наличия класса в первую очередь. Как я могу получить доступ к тегам MXML из внешнего класса? У меня есть все мои импорт и все ...
Решение
public var catalog : AppCollection = new AppCollection (catalogStrip);
Находится ли в сценарии часть main.mxml? Если так, то это причина, по которой вы получаете нулевой объект. Вам нужно иметь метод:
public var catalog : AppCollection;
private function handleCreationComplete():void
{
this.catalog = new AppCollection(catalogStrip);
}