AS3:从外部加载的SWF获取信息

时间:2011-03-30 19:15:56

标签: actionscript-3 actionscript flash

所以我有一个我已经制作的SWF,我需要在项目开始时添加一些指令。我认为最简单的方法是在单独的SWF中制作动画,然后将其导入第一个动画的开头。我的问题是我无法找到一种可靠的方法来判断第一个SWF何时完成播放。我已经用谷歌搜索了这个,但我似乎无法找到任何有用的东西。出于某些奇怪的原因,无论我做什么,程序似乎都认为外部SWF只有2帧,如果我放入一个ENTER_FRAME监听器并跟踪externalSWF.currentFrame我得到“1,1,2,2,2,2, 2,2 ......“我的代码看起来像这样。

var ldr = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
ldr.load(new URLRequest("Instructions.swf"));

function loaded(e:Event){
    trace("Loaded");
    var extSwf = ldr.content as MovieClip;
    addChild(extSwf);
    trace(extSwf.totalFrames);//Returns 2
}

是否还有其他人与外部SWF有类似问题?

此外,对于记录,外部SWF在我作为孩子添加时正常播放。问题是当它完成播放时将它从舞台上移除。它是交互式的,所以我不能只做帧数。

编辑:所以我尝试在extSwf上执行getQualifiedClassName()调用,我得到了“Instructions_fla :: MainTimeline_ Preloader _”这可以解释帧的差异。如何才能访问实际时间表?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

所以我找到了问题的解决方案。就像我在编辑中说的那样,我得到了“Instructions_fla :: MainTimeline_Preloader_”作为QualifiedClassName,所以我搜索了一下,发现有人说Flash CS5默认情况下用preloader导出你的SWF,这就是附加到extSwf而不是MovieClip本身。修复它的方法是进入文件> Actionscript设置>库路径,并将默认链接更改为“合并到代码”。这似乎只发生在CS5中。我在这里找到了解决方案:http://blog.flash-core.com/?p=142