0

ボタンを押すと発生する多くの FLV アニメーションを含む ActionScript 3 の Web サイトがあります。今、これが私が設定した方法です。

AS3 では、ネット ストリームを使用して FLv (After Effects から FLV 形式でエクスポートしたアニメーション) をロードしています。アニメーション (FLV) の再生時間と同じ長さのタイマーを設定しました。タイマーが停止すると、ストリームを閉じて新しいストリームを開き、別のビデオを再生する関数が呼び出されます。タイマーを使用して気付いた唯一の問題は、接続が遅く、(アニメーション) が 1 秒間停止すると、タイマーが進み続け、次の flv を呼び出すのが早すぎることです。

flvの再生の最後にflvまたはswfをロードする方法を知っている人はいますか? タイマーを使用するのではなく、常に前の FLV の実行時間の最後に次の FLV が再生されるようにするにはどうすればよいですか?

私はonCompleteを考えていますが、それを実装する方法がわかりません!?

4

2 に答える 2

0

OSMF フレームワークを使用すると、シーケンシャル再生を非常に簡単に実現できます。ぜひチェックしてみてください。Google で「osmf チュートリアル」を検索すると、オンラインでいくつかのチュートリアルが見つかるはずです。

このフレームワークはかなり最近のものですが、動画だけでなく音声や画像にも対応しているため、Flash でのメディア配信のデファクト ソリューションになる可能性があります。

開発者は、NetStream および NetConnection クラスを気にする必要はありません。ビデオ ソリューションの開発は、オーディオと画像のソリューションと同様に合理化され、扱いやすくする必要があります。唯一の制限は、Flash 10 が必要なことです。

于 2010-09-10T12:09:40.670 に答える
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
    }
}

編集:あなたのコード例では、次のようになります。

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);
于 2010-09-10T12:32:15.990 に答える