Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/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 字典里的奇怪行为_Actionscript 3_Apache Flex_Flex4.5 - Fatal编程技术网

Actionscript 3 字典里的奇怪行为

Actionscript 3 字典里的奇怪行为,actionscript-3,apache-flex,flex4.5,Actionscript 3,Apache Flex,Flex4.5,在类中定义一个字典,它需要根据一些应用程序事件重新启动。如果应用程序窗口有焦点,那么很好。。。但如果不是这样,我得到: TypeError:错误#1009:无法访问空对象引用的属性或方法 以下是相关代码: private var seleccion:Dictionary= new Dictionary(); private function myfunction():void{ trace(stage);//it is always [object Stage] if(sele

在类中定义一个字典,它需要根据一些应用程序事件重新启动。如果应用程序窗口有焦点,那么很好。。。但如果不是这样,我得到:

TypeError:错误#1009:无法访问空对象引用的属性或方法

以下是相关代码:

private var seleccion:Dictionary= new Dictionary();

private function myfunction():void{
    trace(stage);//it is always [object Stage]
    if(seleccion){ //always there
        trace(seleccion);////it is always [object Dictionary]
        seleccion= new Dictionary();//if have focus, ok. If not i get error #1009
    }
}

我简化了代码,只保留了与问题相关的内容(我认为)。。。你知道为什么会发生这种情况,以及我如何预防吗?

如前所述,这似乎更像是一个舞台问题。 尝试通过添加到\u阶段的事件初始化代码,如下所示:

package {

    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite {

        public function Main() {
            addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            //your code should start here
        }
    }
}

如前所述,这似乎更像是一个舞台问题。 尝试通过添加到\u阶段的事件初始化代码,如下所示:

package {

    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite {

        public function Main() {
            addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            //your code should start here
        }
    }
}

错误发生在哪个行号上?空指针异常在这里没有意义。您显示的代码中可能为空的对象是
stage
seleccion
。但是你说这些总是有价值的,那么什么给你呢?请显示更多代码,或者至少告诉我们错误发生在哪一行。仔细考虑后,唯一可能为空的东西(在您显示的代码中)是
阶段
。原因是如果
selection
为null,则
if
语句中的代码将不会执行。我已经使用Flash多年了,如果浏览器没有焦点时,
阶段
为空,我会感到惊讶。但是谁知道呢:)错误出现在下一行:seleccion=newdictionary()//如果有焦点,好的。如果不是,我会出错,有些地方不对劲。如果您的代码有这样一个If语句:
If(seleccion)
那么当
seleccion
为null时,抛出null指针异常的语句将永远不会执行。也许您想显示更多的代码,
myFunction
的代码是否高于您正在使用的完整代码?另外,我做了一个简单的测试,通过定时器创建了一个新的字典。我点击一个按钮启动计时器,然后关注另一个应用程序。当计时器完成时,它会生成一个新的字典,其中有/out错误。听起来好像字典不是问题所在……谢谢你的解释,至少现在它更有意义了。但不幸的是,我不认为任何人可以帮助你,除非你包含更多的代码。错误发生在哪个行号上?空指针异常在这里没有意义。您显示的代码中可能为空的对象是
stage
seleccion
。但是你说这些总是有价值的,那么什么给你呢?请显示更多代码,或者至少告诉我们错误发生在哪一行。仔细考虑后,唯一可能为空的东西(在您显示的代码中)是
阶段
。原因是如果
selection
为null,则
if
语句中的代码将不会执行。我已经使用Flash多年了,如果浏览器没有焦点时,
阶段
为空,我会感到惊讶。但是谁知道呢:)错误出现在下一行:seleccion=newdictionary()//如果有焦点,好的。如果不是,我会出错,有些地方不对劲。如果您的代码有这样一个If语句:
If(seleccion)
那么当
seleccion
为null时,抛出null指针异常的语句将永远不会执行。也许您想显示更多的代码,
myFunction
的代码是否高于您正在使用的完整代码?另外,我做了一个简单的测试,通过定时器创建了一个新的字典。我点击一个按钮启动计时器,然后关注另一个应用程序。当计时器完成时,它会生成一个新的字典,其中有/out错误。听起来好像字典不是问题所在……谢谢你的解释,至少现在它更有意义了。但不幸的是,我认为除非你加入更多的代码,否则任何人都帮不上忙。舞台很好,问题在于选择舞台很好,问题在于选择