2010-03-31 129 views
0

我试图让外部swf加载时,另一个外部swf的flv内容完成播放。使用外部swf中的事件加载新的外部swf

我一直只使用actiosncript 3约一周,我从教程中得到了这一点,所以我的知识是有限的。

这是我到目前为止有:

代码外部SWF(含FLV内容):

import fl.video.FLVPlayback; 

import fl.video.VideoEvent; 



motionClip.playPauseButton = player; 
motionClip.seekBar = seeker; 




motionClip.addEventListener(VideoEvent.COMPLETE, goNext); 



function goNext(e:VideoEvent):void { 

nextFrame(); 

} 

这是主文件的代码:

var Xpos:Number=110; 
var Ypos:Number=110; 
var swf_MC:MovieClip = new MovieClip(); 
var loader:Loader = new Loader(); 

var defaultSWF:URLRequest = new URLRequest("arch_reel.swf"); 

addChild (swf_MC); 
swf_MC.x=Xpos 
swf_MC.y=Ypos 

loader.load(defaultSWF); 
swf_MC.addChild(loader); 
//Btns Universal Function 
function btnClick(event:MouseEvent):void{ 
SoundMixer.stopAll(); 
    swf_MC.removeChild(loader); 

    var newSWFRequest:URLRequest = new URLRequest("motion.swf"); 
    loader.load(newSWFRequest); 
    swf_MC.addChild(loader); 


} 
function returnSWF(event:Event):void{ 
    swf_MC.removeChild(loader); 
    loader.load(defaultSWF); 
    swf_MC.addChild(loader); 
} 
//Btn Listeners 
motion.addEventListener(MouseEvent.CLICK,btnClick); 

swf_MC.addEventListener(swf_MC.motionClip.Event.COMPLETE,swf_MC.motionClip.eventClip, returnSWF); 

我开始明白所有这些是如何运作的,但这一切对我来说都是新鲜事物,所以我肯定我从错误的角度来看待它。

任何帮助都会很棒,因为我已经在这里尝试了几天了。

感谢

+0

很抱歉 - 意识到我已经离开有点过了外部swf文件的代码: 停止() ; function eventClip(e:Event):void { } – wdense51 2010-03-31 04:15:25

回答

0

有可能在这里的几个问题,但一个很明显的是,你似乎没有在正确的地方添加监听器。

如果您有A.swf并希望监听加载的B.swf的时间轴,您需要将侦听器直接添加到时间轴,而不是任何容器或加载器,除非您将事件“冒泡”。

A.swf中

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSWFLoaded); 
loader.load(new URLRequest("B.swf")) 

function onSWFLoaded(e:Event):void 
{ 
    var loaderInfo:LoaderInfo = e.target as LoaderInfo; 

    // cleanup the expired event listener 
    loaderInfo.removeEventListener(Event.COMPLETE, onSWFLoaded); 

    // since the SWF is now loaded you can add a listener to it's timeline ('content') 
    loaderInfo.content.addEventListener("VideoComplete", onVideoComplete); 

function onVideoComplete(e:Event):void 
{ 
    // do something here ;) 
} 

B.swf中

// ... your code ... 

    video.addEventListener(VideoEvent.COMPLETE, onVideoComplete); 

    function onVideoComplete(e:Event):void 
    { 
     // Notifies A.swf that the playback is finished ("VideoComplete" is just custom event, up to you to improve ...) 
     dispatchEvent(new Event("VideoComplete")); 
    } 
+0

太棒了!!! 所有完成,它完美的作品。 非常感谢Theo。当我开始掌握actionscript 3如何进行通信但没有足够的背景知识来正确执行它时,真是令人沮丧。 再次感谢! – wdense51 2010-03-31 20:22:58

+0

太棒了; )接受了吗? (我的微小奖励) – 2010-03-31 22:43:24