2010-04-20 4 views
1

Essentiellement c'est ce que je veux accomplir, mais cela ne fonctionne pas comme ça. Y at-il une solution: - Le problème est que je ne peux pas nommer dynamiquement un nouvel objet ... ??? tirant mes cheveux.Flex - Comment utiliser une variable pour définir le nom d'un objet instancié

import views.printingView; 

public function initComponent(o:Array):void{ 
    SomeObject::Array = o; 

    for(i=0; i <=SomeObject.length-1; i++){ 
    'invoice'+{SomeObject[i].namedID}:printingView = new printingView(); 
    someDisplayContainer.addChild('invoice'+{SomeObject[i].namedID}); 
    'invoice'+{SomeObject.namedID}.publicInitFunction(SomeObject[i]); 
    } 
    } 
+0

p.s. les parenthèses autour de SomeObject [i] .namedID ne devraient probablement pas être là, mais j'ai essayé avec et sans. – flexfanatic

Répondre

2

A partir du code affiché, il n'y a pas besoin d'une variable dynamique nommée du tout. Le même code peut être simplifié à ceci:

import views.printingView; 

public function initComponent(o:Array):void{ 
    for each(var item:Object in o) 
    { 
     var v:printingView = new printingView(); 
     someDisplayContainer.addChild(v); 
     v.publicInitFunction(item); 
    } 
} 

Si pour une raison quelconque vous avez vraiment besoin d'une dynamique nommée variables, vous pouvez le faire comme ça. Cela suppose que l'objet courant est déclaré dynamique.

import views.printingView; 

public function initComponent(o:Array):void{ 
    SomeObject::Array = o; 

    for each(var item:Object in o) 
    { 
     var name:String = 'invoice' + item.namedID; 
     this[name] = new printingView(); 
     someDisplayContainer.addChild(this[name]); 
     this[name].publicInitFunction(item); 
    } 
}