外部swf中的stage.scaleMode导致TypeError:错误#1009

时间:2013-03-02 13:42:14

标签: actionscript-3

当我尝试使用此代码

将外部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文本可以解决问题? 提前致谢

1 个答案:

答案 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事件。