Actionscript 3 我的flash swf无法检测事件。完成
我有一个flash文件,包含2个场景。 第一个场景使用flvplayback连续循环随机选择的外部flv文件。 第二个场景包含2个外部swf文件的代码,一个接一个播放。不断地 然而,第二幕似乎不起作用。它只是无法进入功能。 在这里,我还为场景2粘贴了actionscript代码Actionscript 3 我的flash swf无法检测事件。完成,actionscript-3,flash,Actionscript 3,Flash,我有一个flash文件,包含2个场景。 第一个场景使用flvplayback连续循环随机选择的外部flv文件。 第二个场景包含2个外部swf文件的代码,一个接一个播放。不断地 然而,第二幕似乎不起作用。它只是无法进入功能。 在这里,我还为场景2粘贴了actionscript代码 stop(); var myLoader:Loader = new Loader(); var url:URLRequest = new URLRequest("loader.
stop();
var myLoader:Loader = new Loader();
var url:URLRequest = new URLRequest("loader.swf");
myLoader.load(url);
addChild(myLoader);
stage.loaderInfo.addEventListener(Event.COMPLETE,playnextswf);
function playnextswf(event:Event):void{
trace("in function");
removeChild(myLoader);
var myLoader2:Loader = new Loader();
var url2:URLRequest = new URLRequest("intro.swf");
myLoader.load(url2);
addChild(myLoader2);
}
编辑
通过更改这行代码,我进行了一些编辑:
.addEventListener(事件完成,播放下一个TSWF)
到
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,playnextswf)
它似乎跳转到函数中,但有错误
in function
in function
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at praperkahwinan_fla::MainTimeline/playnextswf()
我认为您正在寻找更多:
var myLoader:Loader = new Loader();
var url:URLRequest = new URLRequest("loader.swf");
myLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, playnextswf );
myLoader.load(url);
addChild(myLoader);
您将侦听器附加到stage loaderInfo,其工作方式与adobe略有不同:
LoaderInfo类提供有关加载的SWF文件或
加载的图像文件(JPEG、GIF或PNG)。LoaderInfo对象是
可用于任何显示对象。提供的信息包括
加载进度、加载程序和加载内容的URL、编号
介质的总字节数,以及介质的标称高度和宽度
媒体
正如我们在聊天室中所讨论的,您正在寻找类似的内容:
var myLoader:Loader= new Loader();
myLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, onLoaderComplete );
myLoader.load( new URLRequest( "loader.swf" ) );
var myLoaderSwf:MovieClip;
function onLoaderComplete( e:Event ):void {
trace( "first swf loaded" );
myLoaderSwf = e.target.content as MovieClip;
addChild(myLoaderSwf);
myLoaderSwf.addFrameScript( insert frame number, loadNextSwf );
myLoaderSwf.gotoAndPlay(2);
}
function loadNextSwf():void {
trace( "removing currently loaded swf -- loading next swf" );
removeChild( myLoaderSwf );
myLoader = new Loader();
myLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, onIntroComplete );
myLoader.load( new URLRequest( "intro.swf" ) ); //change this to intro.swf
}
function onIntroComplete( e:Event ):void {
trace( "intro swf loaded" );
myLoaderSwf = e.target.content as MovieClip;
addChild(myLoaderSwf);
}
订单有什么不同吗?对不起,我完全不知道。。哈哈。认真地请告诉我,在执行
load()
之前添加侦听器是一种最佳做法load()
是异步工作的,因此您可以在添加侦听器之前加载内容,即使大多数情况下并非如此。但更重要的是,我没有将侦听器放在stage loaderInfo上,而是放在loadermyLoader
上,后者是发出文件请求的对象,而不是stage.oic。。谢谢你的解释。从现在开始,我将在我的每一个代码中这样做。我更改代码。但是,我发现removeChild()有问题。你能帮我吗?我把错误日志放在那里编辑了我的问题。好了,现在你已经把你的问题变成了一个不同的不相关的错误。请尝试myLoader.parent.removeChild(myLoader)
。哈哈哈,很抱歉。但是您确定“myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,playnextswf);”有效吗?我尝试了一下,发现在第一个swf开始播放之前,代码跳转到函数中。