vous obtenez une erreur peut-être définie parce que la racine est pas ce qu'il était. root est maintenant la base programmatique de la structure, la scène a pris sa place en tant que détenteur d'objets d'affichage, et doit donc être référencée pour ajouter des enfants, etc.
La propriété Stage est une propriété dynamique qui est donnée uniquement aux objets qui sont activés. la liste d'affichage Donc, si vous créez cette classe par programme, cela peut renvoyer une erreur nulle si vous changez simplement de racine pour la scène, car elle n'a pas encore reçu de référence de scène car elle n'a pas été ajoutée à la liste. essayez d'utiliser l'écouteur Event.ADDED_TO_STAGE
s'il ne peut pas être joint pour être sûr que l'étape ne sera pas nulle.
plus est pourquoi vous prévoyez d'attacher les choses à la scène de cette façon. En général, ce n'est pas une idée géniale car la scène elle-même n'aura aucune référence directe à l'enfant (bien que vous puissiez utiliser getChildByName ou getChildAt) et pourrait causer des problèmes avec la perte de références plus tard. essayez de penser à soit ajouter l'enfant à l'userinterface actuel ou l'ajout d'une fonction qui attribuera une sorte de valeur au clip étant passé, par exemple:
public static const PLAY_THIS:String = "the event to play the mc";
public function RPUserInterface(){
var np:nowplaying = new nowplaying();
addEventListener(Event.ADDED_TO_STAGE, init);
}
public function getClip():nowplaying{
return np;
}
private function init(ev:Event):void{
//If you want it to play immediately, else use mouseEvent etc
dispatchEvent(new Event(PLAY_THIS));
}
sur votre scénario principal:
var userInt:RPUserInterface = new RPUserInterface();
userInt.addEventListener(RPUserInterface.PLAY_THIS, addFromThis);
addChild(userInt);
private function addFromThis(ev:Event){
//add a global var ref here if needed.
var clip = (ev.target as RPUserInterface).getClip();
addChild(clip);
}
cela peut sembler plus complexe et un gaspillage d'espace, mais c'est une bonne pratique et beaucoup plus facile de faire interagir les classes comme ça. C'est aussi beaucoup plus facile de changer à la volée plus tard.