我在 SWF 的主时间轴上制作了一个 Flash 动画,其中包含几个图层、一些功能和一些关键帧标签。例如,我有一个穿过屏幕的明星的影片剪辑,然后触发主时间线的 dispatchEvent 以转到帧标签“下一个”。
以下是主时间轴上使用的动作脚本示例:
Stars.addEventListener("fadeInTitle",_fadeInTitle);
function _fadeInTitle(e:Event):void {
Title.gotoAndPlay("fadeIn");
Stars.removeEventListener("fadeInTitle",_fadeInTitle);
}
stop();
仅 SWF 就可以完美运行。当我尝试将此 SWF 加载到另一个 SWF 时,问题就来了。发生的情况是加载器不断地重新加载 SWF,重叠它们,并且加载的 SWF 的主时间轴上的动作脚本被忽略,时间轴连续播放。这是我用来加载 SWF 的代码:
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.Event;
import flash.events.ProgressEvent;
function startLoad(){
var mLoader:Loader = new Loader();
var mRequest:URLRequest = new URLRequest("Fly.swf");
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
mLoader.load(mRequest);
}
function onCompleteHandler(loadEvent:Event){
addChild(loadEvent.target.content);
}
function onProgressHandler(mProgress:ProgressEvent){
var percent:Number = mProgress.bytesLoaded/mProgress.bytesTotal;
}
startLoad();
那里没有什么特别的。只是一个简单的装载机。
我找到了一种解决方法,将整个动画放在一个主动画剪辑中,然后将该动画剪辑放在主时间轴上(一个关键帧,一层,无动作脚本),然后加载它。这样它工作得很好,但感觉更像是一个补丁而不是一个解决方案。我真的很想知道为什么当您尝试加载使用具有多个图层、关键帧和动作脚本的主时间轴的外部 SWF 时会出现问题。
任何帮助/提示将不胜感激。
非常感谢您的阅读。
米