2010-04-20 52 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); 
    } 
}  
相關問題