1

本质上这是我想要完成的,但它不是这样工作的。有什么解决方案: - 问题是我不能动态命名一个新对象......???把我的头发拉出来。

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

1 回答 1

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);
    }
}     
于 2010-04-20T04:03:31.370 回答