2010-02-09 5 views
0

Merci beaucoup pour votre temps! Voici ma question ...AS3 Problème d'étendue, comment créer dynamiquement un nouveau MC dans un package/une classe?

public function addNewMc():void{ 
    var newMC:MovieClip= new MovieClip(); 
    this.addChild(newMC); 
} 
public function removeOldMc(newMC):void{ 
    this.removeChild(newMC); 
} 

Comment puis-je créer un nouveau MovieClip dans une méthode, qui peut être utilisé dans toute la classe, sans le définir au sommet de la classe? Et pour des points supplémentaires, sans utiliser le retour.

Je peux le faire fonctionner, si la première fonction addNewMc renvoie la valeur newMC, et passer cela à d'autres méthodes ... mais pour ce que j'écris, j'espère utiliser mon retour avec autre chose. Merci!

Répondre

0

Je ne sais pas si je vous comprends complètement, mais il semble que vous vouliez accéder à un Movieclip créé dynamiquement sans le définir explicitement ?! Est-ce correct? Si oui, alors vous pouvez faire ce que vous avez maintenant, mais ajouter une méthode pour la récupération:

public function addNewMc():void{ 
    var newMC:MovieClip= new MovieClip(); 
    this.addChild(newMC); 
} 

public function getMC():MovieClip 
{ 
    var len:uint = this.numChildren; 
    while(len--) 
    { 
     var tempObj:* = this.getChildAt(len); 
     if(tempObj is MovieClip) 
     return MovieClip(tempObj); 
    } 
    return null; 
} 

Vous pouvez également ajouter une propriété de nom à la dynamique MovieClip:

public function addNewMc():void 
{ 
    var newMC:MovieClip= new MovieClip(); 
    newMC.name = "new_MC"; 
    this.addChild(newMC); 
} 

vous pouvez alors récupérer comme ceci:

this.getChildByName("new_MC"); 

Encore une fois ne sais pas si je comprends bien vos besoins exacts hourras erick;)

Questions connexes