Flash:.as vs .fla - loaderInfo.loader

时间:2009-03-04 00:19:56

标签: flash actionscript-3 events

我的代码是从.as文件

开始的
if (loaderInfo.loader)
    loaderInfo.loader.dispatchEvent(new Event("pageFinish", true));

然后我把上面的代码放到.fla文件(另一个现有的Flash文件)中,但是(loaderInfo.loader)总是返回false,尽管它是从另一个swf加载的。因此,事件永远不会被发送。

编辑: 我会尝试解释一下。

这有效:
container.swf - (loads) - > page1.swf(page1.fla + page1.as)
page1.swf会将事件发送到container.swf

这不起作用:
container.swf - (loads) - > page2.swf(page2.fla)
page2.swf会发送事件,因为loaderInfo.loader在这里返回false

两种情况都没有对container.swf进行任何更改,只是将xml文件更改为指向page1.swf或page2.swf

2 个答案:

答案 0 :(得分:1)

无法对此进行测试,只是从头脑中进行测试:

确保加载的swf有权访问加载程序(LoaderContextApplicationDomain等)。

您可以通过在加载的剪辑中写下此内容来测试:

trace(loaderInfo.childAllowsParent);
trace(loaderInfo.ParentAllowsChild);
trace(loaderInfo.sameDomain);

如果其中一条痕迹返回false,请告诉我们......

当您尝试访问其加载程序时,请确保您的文档已完全构建。

loaderInfo.addEventListener(Event.INIT, eventComplete);
loaderInfo.addEventListener(Event.COMPLETE, eventComplete);

function eventComplete(event:Event):void
{
    trace(event.target.loader);
}

答案 1 :(得分:0)

如果通过Loader对象加载swf,则使用

loaderInfo。 如果编译的fla swf是通过Loader加载的,那么loaderInfo.loader将不会返回false