Actionscript 3 字典里的奇怪行为
在类中定义一个字典,它需要根据一些应用程序事件重新启动。如果应用程序窗口有焦点,那么很好。。。但如果不是这样,我得到: TypeError:错误#1009:无法访问空对象引用的属性或方法 以下是相关代码: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
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错误。听起来好像字典不是问题所在……谢谢你的解释,至少现在它更有意义了。但不幸的是,我认为除非你加入更多的代码,否则任何人都帮不上忙。舞台很好,问题在于选择舞台很好,问题在于选择