Flex: Accès à MXML depuis la classe
-
03-07-2019 - |
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 ...
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);
}