если я загружаю FLV с NetStream, как я могу вызвать функцию, когда FLV перестает играть - PullRequest
0 голосов
/ 10 сентября 2010

У меня есть веб-сайт в ActionScript 3, на котором есть множество анимаций FLV, которые происходят при нажатии кнопок.Прямо сейчас вот как я его настроил.

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

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

я думаю о завершении, но я не знаю, как это реализовать!?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2010

Вот некоторый код для проверки, когда 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
    }
}

РЕДАКТИРОВАТЬ: с вашим примером кода это будет выглядеть примерно так.

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 голосов
/ 10 сентября 2010

С помощью OSMF-фреймворка довольно легко добиться последовательного воспроизведения, вы должны это проверить.Google "учебники osmf", и вы должны найти несколько учебников в Интернете.

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

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

...