ActionScript 3: проблема длины массива - PullRequest
0 голосов
/ 14 марта 2011

Привет, это мой код, я не могу получить длину массива.

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)

        }

    }
}

OutPut

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

Ответы [ 3 ]

4 голосов
/ 14 марта 2011

Хотя можно использовать массив в качестве ассоциативного массива, свойство length не будет работать - оно будет просто возвращать 0. Вам нужно самостоятельно рассчитать длину, используя for..in или a для каждого:

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 голос
/ 14 марта 2011

Вы должны использовать 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)

}

Прочитайте это для получения дополнительной информации.


EDIT: О да. Как указали divillysausages, вы пытались получить длину. Это не возможно напрямую для объектов. Однако вы можете перебирать свойства объекта с помощью цикла for ... in, что упрощает подсчет каждого свойства объекта. Здесь и здесь являются хорошими примерами того, как его использовать.

0 голосов
/ 14 марта 2011

См. [] доступ к массиву из AS3 Reference.

Вы должны использовать целочисленное значение для массивов или вместо Array использовать Object или Dictionary

...