2017-05-24 4 views
2

J'ai deux images.AjouterEnfant à la scène une seule fois lors de la révision de la trame

Dans la première image, vous pouvez cliquer sur un bouton pour passer à l'image suivante. Dans la première image, je veux ajouter menu1 à la scène une seule fois. Si nous passons à l'image suivante et que nous revenons à la première image, le menu1 ne doit plus être créé car il est déjà sur scène.

Mon problème est que lorsque je reviens de l'image 2 à l'image 1, elle continue d'ajouter menu1 copies à la scène.

Voici mon code actuel:

stop(); 

import flash.display.Loader; 
import flash.events.MouseEvent; 
import flash.net.URLRequest; 
import flash.display.Stage; 

var menu1:Loader = new Loader(); 
var request1:URLRequest = new URLRequest ("MENU1.swf"); 
menu1.load(request1); 

if (stage.contains(menu1)){ 

} 
else 
{ 
    addChild(menu1); 
} 

Répondre

3

La raison pour laquelle il garde encore en ajoutant le menu à chaque fois, est parce que votre si la condition sera toujours false.

Il y a deux lignes pour indiquer pourquoi tel est le cas:

var menu1:Loader = new Loader(); 

Dans la ligne ci-dessus, vous créez une marque nouvel objet Loader() et l'affecter à la var menu1

if (stage.contains(menu1)){ 

dans la ligne ci-dessus, vous vérifiez si menu1 est actuellement sur la scène

Depuis la première ligne fonctionne chaque fois que vous visitez ce cadre, ab Un nouvel objet rand est créé à chaque fois. Ce nouvel objet n'existe pas encore sur la scène (le précédent le fait) donc le if conditionnel sera toujours évalué comme false.

Pour y remédier, vous pouvez effectuer les opérations suivantes:

var menu1:Loader; //just define the var here, don't assign anything yet 

//if menu1 doesn't have a value 
if(!menu1){ 

    //create a new Loader only if one doesn't exist yet 
    menu1 = new Loader(); 
    var request1:URLRequest = new URLRequest ("MENU1.swf"); 
    menu1.load(request1); 
    addChild(menu1); 
} 
+0

cela fonctionne comme un charme, mais le problème maintenant eu lieu est quand du cadre 2 à l'image 1, le swf du cadre 2 est chevauchant le cadre 1 Ainsi faites le bouton – Jack

+0

bonjour, pourquoi mon objet ne se montre pas quand je reviens? C'est vraiment confus – Jack

+0

Je vous recommande de créer une nouvelle question avec votre code de trame 2 et une explication plus détaillée de la façon dont cela devrait fonctionner et quel est le problème. – BadFeelingAboutThis