2010-08-07 9 views
10

Me gustaría cargar el archivo SWF antes de mostrárselo al usuario.preload swf con jquery/JS

SWF son dinámicos y no tengo los archivos FLA.

Me encantaría hacerlo usando Javascript o jquery si es posible.

+1

¿Podría cargar el archivo SWF en su propio cargador Flash que se encargará de precargar y mostrarlo solo una vez que esté listo? La secuencia de comandos de Flash sería fácil, puedo ayudar si lo desea. –

Respuesta

0

¿Puede precargar toda la página? Si es así aquí es una idea con jQuery:

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

+0

la demostración se ve genial. Pero no puedo precargar toda la página. Probablemente usaría tu queryLoader en otros proyectos. :) – keithics

+0

¿Puede encerrar el Flash en un IFRAME y precargarlo? –

0

personalmente creo que lo mejor es usar un gestor educado basado en Flash ya que esto puede ser tan poco como 5 kb. El código para ello no tiene que ser tan difícil, algo a lo largo de las líneas de:

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

Este utiliza el DisplayObjectUtil disponible en GitHub: https://github.com/ahmednuaman/as3

2

No sé si todavía está buscando para respuestas, pero aquí está.

  1. Crea dos divs dentro de tu página. Déle a uno una identificación llamada carga, y otra a la función de identificación, y oculte la función. Coloque el contenido de su flash dentro de la función y asegúrese de ocultar la función con la pantalla css: ninguna.

A continuación, en la parte superior de la página, o donde sea que hagas tus cosas onload, hacer esto:

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

Y ahí lo tienen. En la carga interior, puede colocar uno de esos pequeños y felices gráficos giratorios. Estoy seguro de que hay cosas más sofisticadas que puedes hacer con las devoluciones de llamadas, pero esto hará el trabajo de precargar.

Disfrútalo.

6

Tenga una mirada en swfjsPreLoader:

Este preloader acepta una gran variedad de activos (JPG, GIF, PNG, SWF) que le gustaría precarga. Internamente creará una aplicación flash que realiza la precarga. Podría definir varios manejadores de devolución de llamada. Por lo tanto, JavaScript se conoce cuando se cargan todos los activos o se carga cada uno de los activos , incluidos los archivos SWF.

1

Primero puede cargar el archivo swf a través de ajax y luego agregar el objeto a dom.
De esta forma, el navegador usará caché, el swf se recargará desde el caché y está listo de inmediato.

Sigue una muestra de lo que estoy diciendo (No puedo darte una muestra de violín porque necesitas un swf local para que se cargue ajax).
swfobject se puede utilizar en la función "loadObject" para una mejor configuración del objeto swf.
"mySwfFunction" se invoca después de que se carga swf. Se puede quitar si no es necesario.

<!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>