2010-02-17 7 views
1

J'ai un MovieClip créé avec le code suivant:actionscript-3: vérifier si movieClip existe

var thumbContainer:MovieClip = new MovieClip(); 
thumbContainer.name = "thumbContainer"; 
stage.addChild (thumbContainer); 

Si la fenêtre devient plus grand/petit, je veux tout en place. J'ai donc un écouteur d'événement. Maintenant je veux voir si ce mc existe pour le remettre en place. J'ai essayé différentes manières, mais je continue d'obtenir une erreur qui n'existe pas.

1120: Accès à la propriété non définie thumbContainer.

if (this.getChildByName("thumbContainer") != null) { 
trace("exists") 
} 

et

if ("thumbContainer" in this) { 
trace("exists") 
} 

ou

function hasClipInIt (mc: MovieClip):Boolean { 
return mc != null && contains(mc); 
} 

Répondre

1

le problème était que « scène » et « ceci » ne sont pas les mêmes ... c'est pourquoi je ne pouvais pas parler à la mc. cela fonctionne:

var thumbContainer:MovieClip = new MovieClip(); 
thumbContainer.name = "thumbContainer"; 
addChild (thumbContainer); 
if (getChildByName("thumbContainer") != null) { 
    trace("exists") 
} 
+1

vous devriez marquer Amarghosh comme réponse correcte, puisque votre solution est basée sur sa réponse. C'est bon. pour afficher la solution complète pour montrer comment vous avez résolu le problème décrit initialement. Mais il n'est pas habituel, que vous vous marquez comme l'auteur de la réponse, car il est basé sur une autre réponse, qui vous a aidé à trouver votre solution. donc sans, vous auriez été coincé. Donc crédit à l'auteur original, même s'il n'a pas livré les lignes exactes dont vous aviez besoin - ce qui n'est évidemment pas possible, puisque aucun d'entre nous n'a votre code complet. –

5
stage.addChild (thumbContainer); 
//... 
if (this.getChildByName("thumbContainer") != null) 

Vous ajoutez le thumbContainer-stage et la vérification de son existence avec this. Remplacez stage par this ou this par stage. Cela dit, une manière encore plus appropriée est de conserver une référence au clip ajouté et de vérifier son existence avec la méthode contains. Il détermine si l'objet d'affichage spécifié est un enfant de l'instance DisplayObjectContainer ou de l'instance elle-même. La recherche inclut l'ensemble de la liste d'affichage, y compris cette instance DisplayObjectContainer, petits-enfants, arrière-petits-enfants, et ainsi de suite.

Par conséquent, vous pouvez facilement vérifier en utilisant stage.contains(thumbContainer);

+0

Eh bien mes travaux de vérification, donc je peux vérifier si le existe mc, mais maintenant je vouloir faire quelque chose avec ça. Ce (nom d'instance) ne fonctionne pas: var thumbContainer: MovieClip = new MovieClip(); thumbContainer.name = "test"; thumbContainer.x = 10; stage.addChild (thumbContainer); if (this.getChildByName ("test") == null) { \t trace ("quelque chose"); //Travaux! \t this.getChildByName ("test"). X = 10; // Fonctionne pas! \t stage.test.x = 10; // Fonctionne pas! } – Edwinistrator

2

si vous avez des erreurs de tir de problèmes, vous pouvez toujours recourir à une prise d'essai

try{ 
    /// do something that will blow up... 
}catch(e:Error){ 
    trace("we had an error but its not fatal now..."); 
} 
+0

c'est une bonne astuce! – Edwinistrator

+0

Après beaucoup de recherches, seule cette solution a fonctionné pour moi :) – mdikici