Question

J'ai une classe que j'instancie à la création complète:

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

CatalogStrip est une HBox.

Dans cette classe, je crée une VBox et l'ajoute en tant qu'enfant à catalogStrip. Voici le constructeur de ladite classe:

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

Et voici le code avec lequel j'ai des problèmes:

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

Sur la dernière ligne, il est indiqué que this.container est null. Impossible! Je l'ai ajouté dans le constructeur! De plus, j'ai aussi essayé d'instancier main.mxml et d'accéder au conteneur à partir de là. Lorsque j'essaie le même code à partir d'une balise de script dans main.mxml, cela fonctionne, mais cela détruit tout l'intérêt d'avoir la classe là-bas. Comment puis-je accéder aux balises MXML à partir d'une classe externe? J'ai toutes mes importations et tout ...

Était-ce utile?

La solution

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

Est-ce que la partie script est dans le fichier main.mxml? Si c'est le cas, c'est la raison pour laquelle vous obtenez un objet null. Vous devez avoir une méthode:

public var catalog : AppCollection;

private function handleCreationComplete():void
{
    this.catalog = new AppCollection(catalogStrip);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top