所以我有一个我已经制作的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 _”这可以解释帧的差异。如何才能访问实际时间表?
答案 0 :(得分:0)
SWF可以通过SharedObject相互通信。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html
答案 1 :(得分:0)
所以我找到了问题的解决方案。就像我在编辑中说的那样,我得到了“Instructions_fla :: MainTimeline_Preloader_”作为QualifiedClassName,所以我搜索了一下,发现有人说Flash CS5默认情况下用preloader导出你的SWF,这就是附加到extSwf而不是MovieClip本身。修复它的方法是进入文件> Actionscript设置>库路径,并将默认链接更改为“合并到代码”。这似乎只发生在CS5中。我在这里找到了解决方案:http://blog.flash-core.com/?p=142