我在FlashDevelop中创建了一个Flash项目来创建广告。
通过使用Additional Compiler参数设置Preloader:
-frame=NameOfLabel,NameOfMainClass
我的主要课程简称为“主要”,位于顶级/默认包级别。
所以第1帧,作为SWF的Preloader部分,有:
第2帧包含其他所有内容(Main类基本上嵌入了它的所有依赖项)。这包括:
现在我的一个大问题是,我的客户在完成99.9%的项目后很久才请求“重播”功能。
我让这个项目或多或少地分成了不同的状态(Intro,Ready,SlideMenu等),但我不知道如何轻松地将Flash电影重新设置回到最开始(它的位置)预加载并显示YouTube视频。
简单的解决方案是简单地调用一个可以刷新Flash容器的ExternalInterface JavaScript方法,但我认为我无法控制HTML / JavaScript端的内容。
是否有一种从AS3调用重播功能的简单方法?
答案 0 :(得分:0)
不会简单地回到第1帧吗?
答案 1 :(得分:0)
以下似乎可以解决问题!
private function onReplayClick(e:MouseEvent):void {
var theStage:Stage = this.stage; //Temporarly store the stage.
//Kill any animations happening:
TweenMax.killAll(); //3rd party, may not be applicable for you :P
//Remove ALL containers / child DisplayObjects
SpriteUtils.recursiveRemove(theStage); //custom-made
// (this object is no longer attached to the stage at this point)
//Nullify any Singleton / Static variables:
Main.INST = null;
// Load the 'bytes' of the current SWF in a new Loader, then...
// add it to the stage
var swf:Loader = new Loader();
swf.loadBytes( theStage.loaderInfo.bytes );
theStage.addChild( swf );
}
通过对DisplayObjects和任何静态变量(如Singleton实例)进行深度递归清理,它会为您留下一个空白阶段。
之后,您可以实例化一个新的Loader,它将通过当前LoaderInfo的bytes属性加载SWF本身。
将Loader添加到舞台上,然后再次启动并运行!