2010-08-07 18 views
10

Chciałbym wstępnie załadować plik SWF przed wyświetleniem ich użytkownikowi.preload swf z jquery/JS

SWF są dynamiczne i nie mam plików FLA.

Chciałbym zrobić to za pomocą JavaScript lub jquery, jeśli to możliwe.

+1

Czy możesz załadować SWF do swojego własnego programu ładującego Flash, który zajmie się ładowaniem wstępnym i wyświetli go dopiero, gdy będzie gotowy? Skrypt Flasha będzie łatwy, mogę pomóc, jeśli chcesz. –

Odpowiedz

0

Czy można wstępnie załadować całą stronę? Jeśli więc tutaj jest pomysł z jQuery:

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

+0

Demo wygląda świetnie. Ale nie mogę wstępnie załadować całej strony. Prawdopodobnie użyłbym your queryLoader w innych projektach. :) – keithics

+0

Czy można zamknąć Flasha w IFRAME i wstępnie go załadować? –

0

Osobiście myślę, że najlepiej użyć uprzejmy ładowarka Flash oparte jak to może być w jak najmniejszym 5KB. Kod dla niego nie musi być takie trudne, coś wzdłuż linii:

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); 
     } 
    } 
} 

wykorzystuje to, że DisplayObjectUtil dostępny na github: https://github.com/ahmednuaman/as3

2

Nie wiem, jeśli nadal poszukuje dla odpowiedzi, ale oto jest.

  1. Utwórz dwa elementy div wewnątrz swojej strony. Podaj jeden identyfikator zwany ładowaniem, a drugi identyfikator i ukryj. Umieść swoją zawartość Flash w środku i upewnij się, że ukrywasz funkcję z wyświetlaczem css: brak.

Następnie w górnej części strony, lub gdziekolwiek wykonać onload rzeczy, to zrobić:

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

I tam masz. Wewnątrz załadunku możesz umieścić jedną z tych szczęśliwych małych grafik. Jestem pewien, że są bardziej wyrafinowane rzeczy, które można wykonać za pomocą wywołań zwrotnych, ale wykona to zadanie wstępnego ładowania.

Ciesz się.

6

Wystarczy popatrzeć na swfjsPreLoader:

ta preloader akceptuje tablicę aktywów (JPG, GIF, PNG, SWF) byś chcesz wczytywać. Wewnętrznie utworzy aplikację flash, która wykonuje wstępne ładowanie. Można zdefiniować kilka programów obsługi wywołań zwrotnych. Tak więc JavaScript pozna, kiedy wszystkie zasoby zostaną załadowane lub załadowany zostanie każdy pojedynczy zasób , w tym pliki SWF.

1

Możesz najpierw załadować plik swf za pośrednictwem ajax, a następnie dodać obiekt do dom.
W ten sposób przeglądarka będzie używać pamięci podręcznej, swf jest ponownie ładowany z pamięci podręcznej i jest natychmiast gotowy.

Śledź próbkę tego, co mówię (nie mogę dać ci ryba próbkę bo trzeba lokalnej SWF do ajax załadowany).
swfobject może być użyty w funkcji "loadObject" dla lepszej konfiguracji obiektu swf.
"Funkcja mySwfFunction" jest wywoływana po załadowaniu pliku swf. Może być usunięty, jeśli nie jest potrzebny.

<!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> 
Powiązane problemy