Pregunta

Tengo una clase que instancia en la creación completa:

public var catalog : AppCollection = new AppCollection (catalogStrip);

CatalogStrip es un HBox.

En esta clase, creo un VBox y lo agrego como hijo a catalogStrip. Aquí está el constructor para dicha clase:

public function AppCollection (_container : HBox) {
    this.container = _container;
}

Y aquí está el código con el que tengo problemas:

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);
}

En la última línea, dice que this.container es nulo. ¡Imposible! Lo agregué en el constructor! Además, también intenté instanciar main.mxml y acceder al contenedor desde allí. Cuando intento el mismo código de una etiqueta de script en main.mxml, funciona, pero eso mata el punto de tener la clase allí en primer lugar. ¿Cómo puedo acceder a las etiquetas MXML desde una clase externa? Tengo todas mis importaciones y todo ...

¿Fue útil?

Solución

public var catalog : AppCollection = new AppCollection (catalogStrip);

¿Está en la parte del script de main.mxml? Si es así, es la razón por la que obtiene un objeto nulo. Necesitas tener un método:

public var catalog : AppCollection;

private function handleCreationComplete():void
{
    this.catalog = new AppCollection(catalogStrip);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top