ActionScript 3:数组长度问题

时间:2011-03-14 14:31:04

标签: flash flex actionscript-3 actionscript

这是我的代码,无法获得数组的长度。

package com.mypro {


    public class MyEve {

        public var process:Array ;


        public function MyEve() {
            // constructor code
            this.process = new Array();
            trace("this.process " + this.process)
            this.process["CONFIG_XML_LOADING"]          = 'Configuration XML Loading';
            this.process['CONFIG_XML_LOADED']           = 'Configuration XML Loaded';


            trace("this.process +++ " + this.process.length)

        }

    }
}

输出

// Trace
this.process 
this.process +++ 0

3 个答案:

答案 0 :(得分:4)

虽然可以将数组用作关联数组,但是长度属性不起作用 - 它只返回0.你需要自己使用for..in或a计算长度:< / p>

的for..in:

var len:int = 0;
for ( var key:String in this.process )
    len++;
每个

var len:int = 0;
for each( var value:String in this.process )
    len++;

如前所述,如果你使用Object(String key)或Dictionary(Object key)来做这类事情可能会更好。

答案 1 :(得分:1)

您应该使用Object来创建关联数组。

public var process:Object;
public function MyEve() {
    // constructor code
    this.process = new Object();
    trace("this.process " + this.process)
    this.process["CONFIG_XML_LOADING"]          = 'Configuration XML Loading';
    this.process['CONFIG_XML_LOADED']           = 'Configuration XML Loaded';


    trace("this.process +++ " + this.process.length)

}

阅读this了解详情。


编辑: 没错。由于divillysausages指出你试图得到长度。这对于Objects来说不是直接可能的。但是,您可以使用for ... in循环遍历Object的属性,这使得计算对象的每个属性变得微不足道。 Herehere是如何使用它的很好的例子。

答案 2 :(得分:0)

请参阅AS3参考中的[] array access

您必须对数组使用整数值,而不是Array使用ObjectDictionary