2010-09-10 6 views
0

У меня есть сайт в ActionScript 3, в котором много анимаций FLV, которые происходят при нажатии кнопок. Прямо сейчас, вот как я его создал.если я загружаю flv с помощью netStream, как я могу вызвать функцию, когда flv перестает играть

in AS3, im loading FLv (которые являются анимациями, которые я экспортировал в форме FLV из After Effects) с сетевым потоком. У меня установлен таймер за тот же промежуток времени, что и анимация (FLV), и когда таймер останавливает вызов, вызывает функцию, закрывающую поток, открывает новую и воспроизводит другое видео. Единственная проблема, которую я заметил с помощью таймеров, заключается в том, что если соединение происходит медленно и (анимация) останавливается на секунду, таймер продолжает двигаться и вызывает следующий флв слишком рано.

Кто-нибудь знает способ загрузки flv или swf в этом отношении, в конце воспроизведения FLV? так что следующий FLV будет всегда воспроизводиться в конце времени выполнения предыдущего FLV, а не использовать таймеры?

im think onComplete, но я не знаю, как это реализовать !?

ответ

0

Последовательное воспроизведение довольно легко достигается с помощью рамки OSMF, вы должны это проверить. Google «osmf tutorials», и вы должны найти несколько руководств в Интернете.

Рамка довольно недавно, но похоже, что она может стать де-факто решением для доставки мультимедиа во Flash, как это не только видео, но и аудио & изображений.

В качестве разработчика вам не придется беспокоиться о классах NetConnection NetStream &. Разработка видео решений, а также аудио & решений изображений должна быть упрощена и удобна в обращении. Только ограничение состоит в том, что для него требуется Flash 10

+0

Нет ли способа сделать это с as3 самостоятельно без классов? Я действительно собираюсь исследовать osmf, и это выглядит действительно круто, но у меня есть только неделя до окончания обучения, и мне нужно завершить этот проект для града, поэтому мне нужно что-то, что не собирается принимать e = мне долгое время, чтобы исследовать – tyepoe

+0

i do not Думаю, осмф поймет тебя на неделю, чтобы понять! может быть, пару часов, чтобы пройти через учебники и получить общую идею. проверьте этот блог – PatrickS

+0

извините, я больше не могу редактировать ... osmf не займет у вас неделю, чтобы понять! максимум пару часов, чтобы пройти через учебники и получить общую идею. проверьте этот http://www.rblank.com/, есть код для основного игрока, так что вам не нужно начинать с нуля, у него также есть несколько видеоуроков. конечно, вы можете сделать это без osmf, одним из способов может быть загрузка продолжительности видео и контроль текущей позиции, как только текущая позиция достигнет значения продолжительности, вы можете запустить следующее видео, решение Росса должно хорошо работать тоже – PatrickS

0

Вот какой код для проверки, когда FLV заканчивается NetStream. Я просто предоставляю фрагменты, так как я предполагаю, что вы уже начали работать с FLV.

//create a netstream and pass in your connection 
var netStream:NetStream = new NetStream(conn); 

//add callback function for PlayStatus -event 
var client : Object = {}; 
client.onPlayStatus = onPlayStatus; 
netStream.client = client; 

//attach your NetStream to the connection as usual 
//--- 

//function that gets called onPlayStatus 
function onPlayStatus(info : Object) : void { 
    trace("onPlayStatus:" +info.code + " " + info.duration); 
    if (info.code == "NetStream.Play.Complete") { 
     //play the next FLV and so on 
    } 
} 

EDIT: с вашим примером кода он будет выглядеть примерно так.

var nc:NetConnection = new NetConnection(); 
nc.connect(null); 
var ns:NetStream = new NetStream(nc); 

var listener:Object = new Object(); 
listener.onMetaData = function(md:Object):void{}; 
listener.onPlayStatus = function(info : Object) : void { 
    trace("onPlayStatus:" +info.code + " " + info.duration); 
    if (info.code == "NetStream.Play.Complete") { 
     //play the next FLV and so on 
    } 
}; 
ns.client = listener; 

vid1.attachNetStream(ns); 

const moviename1:String = "moviename2.flv"; 
const moviename1:String = "moviename3.flv"; 
var movietoplay:String = "moviename.flv"; 
ns.play(movietoplay); 
+0

у меня есть flv работает уже, но я плохо разбираюсь в этом. Я присоединяю мое подключение к видео на сцене с именем экземпляра, как бы я поставил ваш код с тем, что у меня есть: ... \t var nc: NetConnection = new NetConnection(); \t nc.connect (null); \t var ns: NetStream = новый NetStream (nc); \t vid1.attachNetStream (нс); \t var listener: Object = new Object(); \t listener.onMetaData = function (md: Object): void {}; \t ns.client = слушатель; \t const moviename1: String = "moviename2.flv"; \t const moviename1: String = "moviename3.flv"; \t \t var movietoplay: String = "moviename.flv"; \t ns.play (movietoplay); – tyepoe

+0

Я представил пример с вашим кодом в моем сообщении сейчас – Ross