【问题标题】:Flex - How do I use a variable to define the name of an instantiated objectFlex - 如何使用变量来定义实例化对象的名称
【发布时间】:2010-04-20 03:26:46
【问题描述】:

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

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

【问题讨论】:

  • 附注SomeObject[i].namedID 周围的括号可能不应该存在,但我尝试过使用和不使用。

标签: apache-flex actionscript dynamic object custom-component


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多