对于使用了Stage的swf,只是单纯的用loader加载当complete事件完成时,同时也会触发空引用的报错
一般的解决办法是针对被载入的swf
在初始化之前
package {
import Flash.display.Sprite;
import Flash.events.Event;
public class StageListener extends Sprite
{
public function StageListener()
{
this.addEventListener(Event.ADDED_TO_STAGE,addToStageHandle);
}
private function addToStageHandle(e:Event):void {
//your init code
}
}
}
这样可以确保stage不为空
对于不修改被载入的swf的解决办法,我想到是利用ApplicationDomain来控制加载域,但是试了几次都没有成功。
--------------------------------------测试成功的用法是
var kk =new Sprite();
addChild(kk);
stage.focus = kk;
kk.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);
这样就ok了
本文介绍了解决在使用Loader加载包含Stage的SWF文件时出现空引用错误的方法。一种是在被加载的SWF中实现StageListener类,在Stage加载完成后执行初始化代码;另一种是通过调整父级容器的焦点设置,避免错误发生。

180

被折叠的 条评论
为什么被折叠?



