Domanda

Ho una classe che istanzio alla creazione completata:

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

CatalogStrip è un HBox.

In questa classe, creo un VBox e lo aggiungo come figlio a catalogStrip. Ecco il costruttore per detta classe:

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

Ed ecco il codice con cui ho problemi:

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

Nell'ultima riga, dice che this.container è null. Impossibile! L'ho aggiunto nel costruttore! Inoltre, ho anche provato a creare un'istanza di main.mxml e ad accedere al contenitore da lì. Quando provo lo stesso codice da un tag di script in main.mxml, funziona, ma questo uccide in primo luogo il punto di avere la classe lì. Come posso accedere ai tag MXML da una classe esterna? Ho tutte le mie importazioni e tutto ...

È stato utile?

Soluzione

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

È nella parte dello script di main.mxml? In tal caso, è la ragione per cui stai ottenendo un oggetto null. Devi avere un metodo:

public var catalog : AppCollection;

private function handleCreationComplete():void
{
    this.catalog = new AppCollection(catalogStrip);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top