Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 我的flash swf无法检测事件。完成_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 我的flash swf无法检测事件。完成

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.

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

然而,第二幕似乎不起作用。它只是无法进入功能。 在这里,我还为场景2粘贴了actionscript代码

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上,而是放在loader
myLoader
上,后者是发出文件请求的对象,而不是stage.oic。。谢谢你的解释。从现在开始,我将在我的每一个代码中这样做。我更改代码。但是,我发现removeChild()有问题。你能帮我吗?我把错误日志放在那里编辑了我的问题。好了,现在你已经把你的问题变成了一个不同的不相关的错误。请尝试
myLoader.parent.removeChild(myLoader)
。哈哈哈,很抱歉。但是您确定“myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,playnextswf);”有效吗?我尝试了一下,发现在第一个swf开始播放之前,代码跳转到函数中。