2012-10-15 196 views
1

我的Flash網站需要播放讓我們說一個接一個地播放10個視頻,以減少等待時間我需要預覽視頻2和視頻3,而視頻1正在播放等等...Flash AS3正在播放另一個正在播放的視頻

我需要遵循這個結構,因爲在視頻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部電影將導致100%的CPU使用率和視頻播放的糟糕幀率...也許我必須加載視頻2,檢查加載完成,然後開始加載視頻3 ...這是正確的方法要做到這一點?

再次感謝

回答

0

實現這一目標的最簡單的方法將使用GreenSock的LoaderMax。您可以設置要加載的視頻列表,然後根據用戶的操作對其中的一部分進行優先排序。

LoaderMax具有一些很好的功能,這將很難從頭開始構建,它還修復了一些奇怪的Flashplayer行爲。

有一點點的學習曲線,但它不是太陡峭。

+0

Strah非常感謝您的回覆,我正在考慮讓LoaderMax繼續進行一些更復雜的項目,我想在不使用外部庫的情況下對其進行排序,我在原始文章中添加更多細節,再次感謝 – Andrus

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使用情況也很好。

如果有更專業的方式,我想了解更多。 (「謝謝,很快見到你」);

相關問題