Impossible de retirer l'enfant de la scène - si (stage.contains (child1)) {removeChild (child1);} ne fonctionne pas
-
26-10-2019 - |
Question
Il peut sembler stupide, mais comment puis-je supprimer un enfant défini de la scène? par exemple.
function giveMeResult(e:MouseEvent):void
{
if(stage.contains(result))
{removeChild(result);}
addChild(result); // this part works fine, but it adds one over another
}
il ajoute un résultat sur le dessus de la précédente.
Je veux que la fonction « giveMeResult: supprimer « résultat » si est sur la scène et ajouter un nouveau
.Mise à jour: * résultat est un champ de texte, et result.txt = « » changements de temps en temps ...
trace (result.parent); /// gives [object Stage]
trace (result.stage); /// gives[object Stage]
trace (result.parent != null && result.parent == result.stage); // gives true
result.parent.removeChild(result);
est écrit sans instruction if - donne l'erreur TypeError:. Erreur # 1009: Impossible d'accéder à une propriété ou une méthode d'une référence d'objet null
écrit à l'intérieur:
if (result.parent !=null && result.parent == result.stage)
{
result.parent.removeChild(result);
}
rien ne se passe et nouvel enfant est ajouté au sommet de la précédente.
Merci à tous !!! Le résultat est simple :) Tout ce que je devais faire est tout simplement le changement result.txt sans même retirer de la scène:)
La solution 5
Tout ce que je devais faire, il est tout simplement le changement result.txt sans même retirer de la scène
Autres conseils
Vous devez taper stage.removeChild(result);
puis stage.addChild(result);
Edit:
En regardant une fonction similaire à la vôtre:
private function func(e:Event) : void {
if(stage.contains(result)) {
stage.removeChild(result);
}
stage.addChild(result);
}
La seule façon cela ajouterait une nouvelle instance de la result
TextField à la scène, sans enlever l'ancien, serait si le résultat a changé. Voir ce flux d'exécution:
var result : TextField = new TextField();
// An event occurs and func get's called.
// now result will be added to stage.
result = new TextField();
// An event occurs and func get's called again
// This time the stage.contains(..) will return false, since the current result
// is not actually on stage. This will add a second TextField to the stage.
Si je suis bien compris ce que vous voulez, alors ce code peut vous aider à:
if (result.parent != null && result.parent == result.stage)
{
// stage itself contains result
result.parent.removeChild(result);
}
Avez-vous essayé?
MovieClip(root).removeChild(result)
[EDIT]
function giveMeResult(e:MouseEvent):void{
if(result.parent != null && result.parent == result.stage){
stage.removeChild(result);
}
stage.addChild(result);
}