2010-04-20 46 views
1

本质上,这是我想要完成的,但它不能像这样工作。有没有解决办法: - 问题是我不能动态地命名一个新的对象...?拉我的头发。Flex - 如何使用变量来定义实例化对象的名称

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. SomeObject [i] .namedID周围的括号可能不应该在那里,但我尝试过和没有。 – flexfanatic 2010-04-20 03:28:12

回答

2

从您发布的代码中,根本不需要动态命名变量。相同的代码可以简化为这样:

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); 
    } 
} 

如果由于某种原因,你真的需要一个动态命名变量,你能做到这样。这假定当前对象被声明为动态的。

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); 
    } 
}  
相关问题