ActionScript3:声明对象后如何初始化该对象中的数组长度?

ActionScript3:声明对象后如何初始化该对象中的数组长度?,actionscript,Actionscript,我使用的AS3类是: package { public class PeopleInfo { public var elements:int; public var PeopleName:Array; public var PeopleInt:Array; public var PeopleDecimal:Array; } } 在另一个文件中,我得到: <?xml version="1.0" encoding

我使用的AS3类是:

package {
    public class PeopleInfo {
        public var elements:int;
        public var PeopleName:Array;
        public var PeopleInt:Array;
        public var PeopleDecimal:Array;
    }
}
在另一个文件中,我得到:

<?xml version="1.0" encoding="utf-8"?>
<s:Application 
    creationComplete="initApp()"
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Script>
        <![CDATA[
        public var ii:int;  

        public var dataWriteToDB:PeopleInfo = new PeopleInfo;

        public function initApp():void
        {
            // Initialize data provider array.

            var int_data:Array = new Array(10, 20, 30, 40, 50);
            var decimal_data:Array = new Array(13.11, 23.34, 35.69, 43.29, 58.92);
            var name:Array = new Array("Joe", "Karen", "Simon", "Greg", "Alice");

            dataWriteToDB.elements = 5; // number of elements in array

            for (ii = 0; ii < dataWriteToDB.elements; ii++)
            {
                dataWriteToDB.PeopleName[ii] = name[ii];
                dataWriteToDB.PeopleInt[ii] = int_data[ii];
                dataWriteToDB.PeopleDecimal[ii] = decimal_data[ii];
            } 

        }
and so on...

我收到一个运行时错误:
错误#1009:无法访问引用for循环第一行的null对象引用的方法的属性
dataWriteToDB.PeopleName
,因为它是null


我猜这里的问题是,虽然最初声明了dataWriteToDB,但PeopleInfo类中的数组长度尚未设置。或者,不确定它为什么为空。有人知道如何清除吗?

类中的数组尚未初始化。你应该在声明中这样做:

package {
    public class PeopleInfo {
        public var elements:int;
        public var PeopleName:Array = [];
        public var PeopleInt:Array = [];
        public var PeopleDecimal:Array = [];
    }
}

还考虑使用<代码> Pux向数组中添加元素,以避免意外访问不存在的索引:

        for (ii = 0; ii < dataWriteToDB.elements; ii++)
        {
            dataWriteToDB.PeopleName.push(name[ii]);
            dataWriteToDB.PeopleInt.push(int_data[ii]);
            dataWriteToDB.PeopleDecimal.push(decimal_data[ii]);
        } 
(ii=0;ii { dataWriteToDB.PeopleName.push(名称[ii]); dataWriteToDB.PeopleInt.push(int_data[ii]); dataWriteToDB.PeopleDecimal.push(十进制数据[ii]); }