2010-08-17 80 views
0

我有一個很大的SWF閃存文件正在被父SWF加載,我想開始播放正在加載的電影,比方說,當它完成50%時。根據我預期的用戶帶寬和我的電影大小,我會計算出最佳時機(電影可以是20%,30%或50%)。我想讓用戶等待最低限度,我不需要等到我的閃光燈100%。Flash - 如何在完成之前開始播放正在加載的SWF電影?

好吧,這就是說,這是問題所在。我在ActionScript 3中。我有一部電影正在加載另一部電影,我希望預計電影開始放映。我有一個onProgressHandler(mProgress:ProgressEvent)函數(通過ProgressEvent.PROGRESS啓動偵聽器),並且我有一個常規的onLoadComplete(e:Event)函數(偵聽器由Event.COMPLETE啓動)。我可以檢查在我的常規onProgressHandler中完成的20%。但是,當我確定這一點已經達成時,我怎麼能期待這部電影的發行呢?我的意思是,我的Event.COMPLETE處理程序通過e:Event,我可以使用e.target將加載的對象放入我的影片中。但是如果我想在完成之前啓動該過程會發生什麼?我不能通過這個e:Event,因爲COMPLETE處理程序尚未啓動...

要說一件重要的事情。正在加載的電影幾乎是空的。它非常輕。重型電影是一個正在加載的電影,我希望在電影完成加載之前將該電影加載到電影片段中。那可能嗎?

我希望我已經說清楚了。如果我沒有,我會嘗試進一步解釋。

任何援助將非常感激。非常感謝。

回答

0

progressEvent有一個bytesLoaded屬性,您可以使用它來決定何時啓動電影。 通過了解總字節數和加載的字節數,您所要做的就是設置一個時間間隔來確定用戶的實際下載速度。一旦獲得了所有這些信息,就可以確定用戶是否下載了足夠的時間來啓動電影。

檢查Adobe網站以便更多ProgressEvent:http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/events/ProgressEvent.html

escapetheory.com.au

+0

好吧,我得到它,我做的更多或更少。我的疑問是:如何在達到它之前調用與Event.COMPLETE相同的東西?我需要持有加載電影的e:Event來執行以下操作: var loaderInfo:LoaderInfo = e.target as LoaderInfo; var loaded_swf = e.target.content; loaded_swf.x = 50; loaded_swf.y = 50; mc_control.addChild(loaded_swf); – 2010-08-17 01:43:09

+1

@Marcos Buarque。 Loader是一個DisplayObject。你已經有一個參考;如果您不將加載器存儲爲時間軸或類變量,那麼您可以從您的事件處理程序中訪問它。所以,你可以添加它而不是內容。你也可以改變它的'x,'y','width'等。對於大多數目的而言,它與改變內容本身是一樣的,除非你不必等到它被加載。 – 2010-08-17 02:28:53

+0

你的函數解析一個Event類型參數(對於完整的事件),但實際上你可以採取任何事件。我認爲ProgressEvent從事件擴展,所以你的函數可以是這樣的: onProgressEvent(event:Event):void { if(enoughLoaded){onComplete(event); } } – Garrt 2010-08-18 00:58:18

相關問題