当我尝试使用此代码
将外部swf加载到主文件中时var imageLoader:Loader = new Loader();
var url:URLRequest = new URLRequest("Content.swf");
imageLoader.load(url);
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
function imageLoaded(e:Event):void {
image.addChild(imageLoader);
}
如果外部swf有此代码,
stage.scaleMode = StageScaleMode.NO_SCALE;
然后我收到此错误:TypeError:错误#1009:无法访问空对象引用的属性或方法。但是如果swf中有TLF文本(或者至少只是一个没有字符的TLF文本字段)那么一切都没问题。使用经典文本时,错误仍然存在。为什么外部swf中存在TLF文本可以解决问题? 提前致谢
答案 0 :(得分:1)
在外部swf中使用Event.ADDED_TO_STAGE
以确保该阶段是可访问的:
public function astest1()
{
if(stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
protected function init(event:Event = null):void
{
if(event)
EventDispatcher(event.target).removeEventListener(event.type, arguments.callee);
trace("stage = ", stage);
}
至于TLF修复了这个问题我猜它可能是RSL的影响,它很可能是flash加载tlf运行时库所以它会延迟调用你的swf的costructor,所以主swf添加了加载器和外部swf(并且使stage
可以访问外部swf),但它确定不稳定)在这两种情况下,我建议你在舞台使用前听Event.ADDED_TO_STAGE
事件。