2010-08-07 98 views
10

我想在將它們呈現給用戶之前預加載SWF。用jquery/JS預加載swf

SWF是動態的,我沒有FLA文件。

我很想用Javascript或jQuery來做,如果可能的話。

+1

你可以加載SWF到你自己的Flash加載程序,它只會在預加載完成後才進行預加載並顯示它? Flash腳本很簡單,如果你願意的話,我可以提供幫助。 – 2011-01-07 17:54:24

回答

0

你可以預載全部頁面嗎?如果所以這裏是用jQuery的想法:

http://www.gayadesign.com/scripts/queryLoader/

+0

演示看起來不錯。但我無法預載整個頁面。我可能會在其他項目中使用您的queryLoader。 :) – keithics 2010-08-07 20:02:52

+0

你可以將閃光燈放入IFRAME並預加載? – 2011-01-07 17:51:06

0

我個人認爲這是最好使用一個基於Flash的禮貌裝載機因爲這可能是少5KB。它的代碼並不一定是硬的,沿着線的東西:

package 
{ 
    import com.firestartermedia.lib.as3.utils.DisplayObjectUtil; 

    import flash.display.Sprite; 
    import flash.events.Event; 

    [SWF(backgroundColor=0xFFFFFF, frameRate=30, height=400, width=600)] 

    public class AppLoader extends Sprite 
    { 
     public function AppLoader() 
     { 
      loaderInfo.addEventListener(Event.INIT, handleInit); 
     } 

     private function handleInit(e:Event):void 
     { 
      loaderInfo.removeEventListener(Event.INIT, handleInit); 

      DisplayObjectUtil.loadMovie('App.swf', null, handleComplete); 
     } 

     private function handleComplete(e:Event):void 
     { 
      removeChild(loader); 

      addChild(e.target.content); 
     } 
    } 
} 

它使用DisplayObjectUtil可以在GitHub上:https://github.com/ahmednuaman/as3

2

我不知道,如果你還在尋找爲答案,但在這裏。

  1. 在您的頁面內創建兩個div。給一個ID加載,另一個ID功能,並隱藏功能。將您的Flash內容放入功能中,並確保使用css顯示隱藏功能:無。

然後,在您的網頁,或任何你做你的onload東西的頂部,這樣做:

  $(document).load('/path/to/your.swf', function() { 
       $('#feature').slideDown(600); 
       $('#loader').slideUp(300); 
      }); 

有你有它。 裏面加載,你可以把那些快樂的小紡車圖形之一。我相信你可以用回調做更復雜的事情,但這會做預加載的工作。

享受。

6

看一看swfjsPreLoader

此預加載接受資產的陣列(JPG,GIF,PNG,SWF),你會 喜歡預裝。在內部它將創建一個閃存應用程序 進行預加載。你可以定義幾個回調處理程序。因此, JavaScript會知道何時加載所有資產或加載每個單獨的資產(包括SWF文件)。

1

您可以先通過ajax加載swf文件,然後將對象添加到dom。
通過這種方式,瀏覽器將使用緩存,swf從緩存中重新加載並立即就緒。 (我不能給你一個小提琴樣本,因爲你需要一個本地瑞士法郎加載ajax)。
swfobject可用於「loadObject」函數中,以更好地配置swf對象。
在加載swf後調用「mySwfFunction」。如果不需要,它可以被刪除。

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <title>Swf demo</title> 
    <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.js'></script> 
    <style type='text/css'> 
    </style> 
    <script type='text/javascript'> 
     $(window).load(function() { 
      var loader = new 
    function() { 

     var loadObject = function ($el, src, callback, width, height) { 
      var d = document; 
      var s = 'object'; 
      var obj = d.createElement(s); 

      obj.type = 'application/x-shockwave-flash'; 
      if(width){ 
      obj.width = width.toString() + 'px'; 
      } 
      obj.name = 'plugin'; 

      if(height){ 
      obj.height = height.toString() + 'px'; 
      } 

      obj.data = src; 
      $el[0].appendChild(obj); 
     }; 


     this.loadSwf = function ($el, src, callback, width, height) { 

      $.ajax({ 
      url: src, 
      success: function (data) { 
       loadObject($el, src, callback, width, height); 
       if(callback) callback(); 
      }, 
      error: function (xhr) { 
       //your error code 
      } 
      }); 

     }; 


     }(); 

     var mySwfCallback = function() { 
      $('#mySwf').show(); 
     } 

     var $el = $('#mySwf'); 
     var src = 'your_file_url.swf'; 
     loader.loadSwf($el, src, mySwfCallback, 300, 300); 
    }); 
    </script> 
</head> 
<by> 
    <div id='mySwf' style='display:none;' > 
    </div> 
</body> 
</html>