Использование событий во внешнем SWF для загрузки нового внешнего SWF - PullRequest
0 голосов
/ 31 марта 2010

Я пытаюсь загрузить внешний SWF-файл после завершения воспроизведения содержимого FLV другого внешнего 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);

Я начинаю понимать, как все это работает, но сейчас все это для меня ново, поэтому я уверен, что подошел к этому не с того угла.

Любая помощь была бы фантастической, поскольку я пытался это делать уже несколько дней.

Спасибо

1 Ответ

0 голосов
/ 31 марта 2010

Возможно, здесь есть несколько проблем, но одна из них совершенно очевидна: вы, кажется, не добавляете слушателя в нужное место.

Если у вас есть 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"));
    }
...