Вопрос

У меня есть класс, который я создаю при завершении создания:

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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top