2010-12-11 46 views
3

J'ai besoin d'accéder à chaque enfant après les avoir ajoutés dynamiquement à la scène, mais j'ai des problèmes pour comprendre comment. Au clic, il ajoute l'image à la scène, et je dois les faire briller un à la fois, avec un for(), mais je ne sais pas comment les nommer chacun avec son propre nom (nom + i) pour y accéder plus tard.Enfants AS3 Flash dynamiquement ajoutés. Problème avec les nommer et appeler chacun séparé

Nous vous remercions à l'avance

stage.addEventListener(MouseEvent.MOUSE_DOWN, clicky); 
var i = 1; 
function clicky(event:MouseEvent):void 
{ 
    i++; 
    var fl_MyInstance:LibrarySymbol = new LibrarySymbol(); 
    addChild(fl_MyInstance); 


    var myStageX:Number = Math.round(event.stageX); 
    var myStageY:Number = Math.round(event.stageY); 

    fl_MyInstance.x = myStageX; 
    fl_MyInstance.y = myStageY; 

     if(myStageX<150){ 
      fl_MyInstance.scaleX = fl_MyInstance.scaleY = 1-(myStageX/300); 
     }else{ 
      fl_MyInstance.scaleX = fl_MyInstance.scaleY = 0.5; 
      } 
} 

EDIT: Merci pour vos réponses. Je vais essayer de le faire avec un tableau, compte tenu que je veux les rendre amovibles plus tard. Le but du projet est de créer des étoiles à travers la scène où vous cliquez et faire déplacer un point d'une étoile à l'autre pour les faire briller quand il les frappe.

Répondre

3

Si vous avez besoin d'y accéder plus tard par le nom que vous pouvez le faire en nommant les symboles:

... 
var fl_MyInstance:LibrarySymbol = new LibrarySymbol(); 
fl_MyInstance.name = "symbol_" + i; 
addChild(fl_MyInstance); 
... 

je les ajouter à un tableau ou Vector place. De cette façon, il est facile d'y accéder plus tard. C'est également bon en les disposant.

... 
var fl_MyInstance:LibrarySymbol = new LibrarySymbol(); 
_symbolList.push(fl_MyInstance) 
addChild(fl_MyInstance); 
... 
+0

+1. La façon dont je le fais. Mentionner l'utilisation si les vecteurs vous ont valu le vote. – sberry

1

Vous pouvez y accéder dans un tableau à l'aide de getChildren. Quelque chose comme cela devrait fonctionner pour vous:

var children:ArrayCollection = this.getChildren(); 

foreach(var child:LibrarySymbol in children) 
{ 
...do whatever 
} 

Si vous voulez y accéder individuellement, vous pouvez utiliser getChild ou getChildAt ou similaire. L'utilisation de conventions de nommage avec des données dynamiques est probablement le moyen le plus difficile de le faire.

Consultez ici pour plus d'informations: http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_08.html