Использование событий во внешнем swf для загрузки нового внешнего swf

Я пытаюсь загрузить внешний 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);

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

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

Спасибо


person wdense51    schedule 31.03.2010    source источник
comment
К сожалению, я понял, что немного упустил код для внешнего swf-файла: stop(); функция eventClip (e:Event):void{ }   -  person wdense51    schedule 31.03.2010


Ответы (1)


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

Если у вас есть 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"));
    }
person Theo.T    schedule 31.03.2010
comment
Потрясающий!!! Все сделано и работает отлично. Большое спасибо, Тео. Это было очень неприятно, так как я начал понимать, как взаимодействует actionscript 3, но не имел достаточных базовых знаний, чтобы правильно его выполнить. Спасибо еще раз! - person wdense51; 01.04.2010