簡體   English   中英

如果我用netStream加載flv,當flv停止播放時如何調用函數

[英]if I load a flv with netStream, how can I call a function when the flv stops playing

我在ActionScript 3中有一個網站,當您按下按鈕時會出現很多FLV動畫。 現在這就是我的設置方法。

在AS3中,使用網絡流即時加載FLv(這是我從After Effects以FLV格式導出的動畫)。 我為動畫設置了一個與動畫(FLV)播放時間相同的時間長度,當計時器停止時,它調用了一個函數,該函數關閉流,打開一個新的視頻,然后播放另一個視頻。 我注意到使用計時器的唯一問題是,如果連接速度很慢並且(動畫)停止了一秒鍾,則計時器會繼續運行,並且過早調用下一個flv。

有沒有人知道在flv播放結束時加載flv或swf的方法? 這樣,下一個FLV將始終在前一個FLV的運行時間結束時播放,而不是使用計時器?

我在想onComplete,但我不知道如何實現!!

使用OSMF框架很容易實現順序播放,您應該檢查一下。 Google的“ osmf教程”,您應該在線上找到一些教程。

該框架是相當新的,但由於它不僅限於視頻,而且還包括音頻和圖像,因此它似乎可能成為Flash中媒體交付的實際解決方案。

作為開發人員,您不必費心NetStream和NetConnection類。 開發視頻解決方案以及音頻和圖像解決方案應簡化並易於處理。 唯一的限制是它需要Flash 10

這是一些用於檢查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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM