Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3错误代码1009-无法访问空对象引用的属性或方法_Actionscript 3_Flash_Apache Flex_Object_Dynamic - Fatal编程技术网

Actionscript 3 AS3错误代码1009-无法访问空对象引用的属性或方法

Actionscript 3 AS3错误代码1009-无法访问空对象引用的属性或方法,actionscript-3,flash,apache-flex,object,dynamic,Actionscript 3,Flash,Apache Flex,Object,Dynamic,是的,我肯定有数百万像这样的问题,但这一个已经难住了我。请遵守下面的代码示例: <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init(event)"> <fx:Script>

是的,我肯定有数百万像这样的问题,但这一个已经难住了我。请遵守下面的代码示例:

<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx"
     creationComplete="init(event)">

<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        [Bindable]
        private var data:Object;

        private function init(e:FlexEvent):void {
            this.data.item = new Array();
        }
    ]]>
</fx:Script>
</s:Group>
有人能帮我弄清楚如何在这个对象上创建我自己的属性吗。通常这很容易。哈哈


感谢您抽出时间。

首先确保数据存在

private function init(e:FlexEvent):void {
   this.data = {};
   this.data.item = new Array();
}

问题在于,
数据
尚未实例化,且为空

<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx"
     creationComplete="init(event)">

<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        [Bindable]
        private var data:Object;

        private function init(e:FlexEvent):void {
            this.data = {};
            this.data.item = new Array();
        }
    ]]>
</fx:Script>
</s:Group>

您混淆了数据类型和数据实例。虽然并非所有对象都是动态的,但所有类都派生自
object

换句话说,如果数据是非动态的数据类型,则不能设置
属性。AS3中的类通过
dynamic
关键字定义为dynamic。默认情况下,匿名对象是动态的:


因此,如果设置
this.data={}
,则可以设置
属性。

更好的是,可以这样做:

private function init(e:FlexEvent):void {
    if(this.data == null) 
        this.data = {};
    this.data.item = new Array();
}

这样,无论何时调用init,如果数据存在,它都不会被空白对象覆盖。

Yikes。。。我一看到这个,就有一股“我不敢相信我没想到”的冲动从我身上碾过。是的,就是这样。谢谢我想我今天醒得太久了。真不敢相信我错过了。谢谢你,你要小心点。。。如果数据已经存在,那么您将使用空对象过度写入它。。。这不一定是你想要的。
private function init(e:FlexEvent):void {
    if(this.data == null) 
        this.data = {};
    this.data.item = new Array();
}