我的flash swf无法检测到event.COMPLETE

时间:2014-02-04 02:19:47

标签: actionscript-3 flash

我有一个包含2个场景的flash文件。 第一个场景使用flvplayback连续循环随机选择的外部flv文件。 第二个场景包含2个外部swf文件的代码,一个接一个播放。连续地进行。

然而,它似乎不适用于第二个场景。它只是不会进入功能。 在这里,我还粘贴了场景2的动作脚本代码。

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);    
}
  

修改

我做了一些编辑,改变了这行代码:

  

- 阅读进度 - (Event.COMPLETE,playnextswf);

  

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()

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找更多:

 var myLoader:Loader = new Loader();                     
 var url:URLRequest = new URLRequest("loader.swf"); 
 myLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, playnextswf );
 myLoader.load(url);                                     
 addChild(myLoader);

您将侦听器附加到舞台loaderInfo,其工作方式略有不同,来自adobe:

  

LoaderInfo类提供有关加载的SWF文件或a的信息   加载的图像文件(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);
}