1

私のフラッシュ サイトは、10 本のビデオを次々と再生する必要があります。待ち時間を短縮するために、ビデオ 1 の再生中にビデオ 2 とビデオ 3 をプリロードする必要があります。

この構造に従う必要があるのは、ビデオ 1 の最後でユーザーが次 (2 または 3) を選択する機会があるためです。

すべてのコードはムービーの最初のフレームにありますが、まだクラスやパッケージなどを学習する必要があります。

最初のビデオは、次のコードを使用してステージに配置したリンクされたビデオ (myVideo) を介して再生されます。

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("video1.f4v");
var myVideo:Video = new Video();
myVideo.attachNetStream(ns);
addChild(myVideo);

nr. 1が遊んでいます。

リンクされたビデオをあと 2 つ作成し、それらをステージの外に配置してそこにロードし、必要なときにすぐに利用できるようにしますか?

どうもありがとうございました!

--- 編集: 私の投稿に詳細を追加 ---

この手順を理解するためにいくつかのテストを行っています。次のことを試しました。

var ns2:NetStream = new NetStream(nc);
var ns3:NetStream = new NetStream(nc);
ns2.play("video/video2.f4v");
ns2.pause();
ns2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns3.play("video/video3.f4v");
ns3.pause();
ns3.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

それは機能しますが、この方法で 2 つの映画をロードすると、CPU 使用率が 100% になり、ビデオ再生のフレーム レートが低下します。ビデオ 2 をロードし、ロードが完了したことを確認してから、ビデオ 3 のロードを開始する必要があるかもしれません。それを行う適切な方法は?

再度、感謝します

4

2 に答える 2

1

私は道を見つけたと信じています。ここに完全なスクリプトがあります:

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("video1.f4v");
var myVideo:Video = new Video();
myVideo.attachNetStream(ns);
addChild(myVideo);

var ns2:NetStream = new NetStream(nc);
var ns3:NetStream = new NetStream(nc);

function statusHandler(event:NetStatusEvent):void
{
    switch (event.info.code)
    {
        case "NetStream.Play.Start" :

        ns2.play("video/video2.f4v");
        ns2.pause();
        ns2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

        ns3.play("video/video3.f4v");
        ns3.pause();
        ns3.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

        break;

        case "NetStream.Play.Stop" :
        trace("ns video stop");
        break;
    }
}

ns.play("video2.f4v"); を呼び出すと、ビデオは既にブラウザのキャッシュにあるため、すぐに再生が開始され、CPU の使用率も良さそうです。

より専門的な方法があれば、もっと学びたいです。

trace("ありがとう、またね");

于 2012-10-16T08:54:51.170 に答える
0

これを実現する最も簡単な方法は、Greensock のLoaderMaxを使用することです。読み込みたい動画のリストを設定し、ユーザーのアクションに応じて優先順位を付けることができます。

LoaderMax には、ゼロから構築するのが非常に難しい優れた機能がいくつかあります。また、Flashplayer の奇妙な動作も修正されます。

学習曲線は少しありますが、それほど急ではありません。

于 2012-10-15T09:45:18.163 に答える