Comunidad de diseño web y desarrollo en internet online

Ayuda con Precarga en Flash8

Citar            
MensajeEscrito el 29 Dic 2009 01:34 am
Hola amigos

Soy novato en Flash8. Tengo varias metas que deseo aprender (precargas, libro de comentarios, diseño de submenus), pero la que mas me interesa debido a una web, es la carga de peliculas, ni siquiera sonidos quiero usar.

Para ello, copie una rutina que ustedes pusieron para hacer una precarga simple. A esta le agregue, algo de mi "cosecha" para ver
como cargar mi pelicula swf, pero no he podido hacer que se coordine el Nro.del porcentaje en relacion a mi pelicula.

Dejo claro, que mis pruebas las he realizado desde mi pc, ya que no cuento con internet en mi casa y debo ir a un local para hacer mis pruebas. En mi pc, he puesto en el momento de la ejecución SIMULAR DESCARGA con la velocidad de un modem/fam 56k. La
Pelicula que deseo cargar externamente tiene casi 1 mega de tamaño. Se ve muy bonita pero pesa demasiado.

Mi pelicula de prueba tiene 750x350 pixeles y posee 2 capas :

acciones
fondo

En "acciones", tengo puesto el codigo de ustedes, mas lo que yo le agregue.
En "fondo", tengo 3 cosas. En el extremo superior izquierdo, coloque en texto estatico "Cargando Pelicula" y al lado
en texto dinamico "porcentaje_txt" como nombre de instancia, nombre usado por ustedes en su código. Y abajo, tengo
un recuadro del tamaño de la pelicula QUE DESEO CARGAR, se llama "cuadro". Del codigo que ustedes pusieron, NO USE
la barra de progreso, solamente me interesa ver que el porcentaje vaya aumentando.


Al grano, ........ aca les pongo el codigo que ustedes colocaron y despues está lo que yo agregue.


Código ActionScript :

/* Declaro la función de precarga "cargando", esta función se ejecutara
   todo el tiempo hasta que haya cargado totalmente la pelicula */
function cargando() {
   // Declaración de variables
   var total, cargados, porcentaje;
   // A la variable "total" se le asigna el tamaño de la pelicula en bytes
   total = _root.getBytesTotal();
   // A la variable "cargados" se le asignan el total de bytes hasta el
   //momento descargados de la web
   cargados = _root.getBytesLoaded();
   //Por medio de una regla de tres obtiene el porcentaje cargado y redondea el valor con la función
   //"Math.floor"
   porcentaje = Math.floor((cargados*100)/total);
   //Asigna al campo de texto porcentaje_txt el porcentaje cargado
   porcentaje_txt.text = porcentaje + " %";
   //Mueve la barra de carga al frame correspondiente al porcentaje
   barra_mc.gotoAndStop(porcentaje);
   //Si la cantidad de bytes cargados es igual a la cantidad total de bytes
   if (cargados == total) {
      //Hacer que se deje de ejeuctar esta función
      clearInterval(hiloPrecarga);
      //Iniciar la pelicula
      play();
   }
}

// setInterval nos servira para que la función "cargando" se ejecute cada 1 milisegundo
// Asi, nuestra función revisara constantemente la cantidad de bytes descargados 
// y solo iniciara la pelicula hasta que la descarga termine
// la variable "hiloPrecarga" nos servira para saber que esta corriendo nuestra función
// y frenar su ejecución cada milisegundo por medio de "clearInterval"
var hiloPrecarga = setInterval(cargando, 1);

//Evita que inicie la pelicula
stop();


ACA VA MI CODIGO......

Código ActionScript :

cargando();
/* Declaro la función de precarga "cargando", esta función se ejecutara
   todo el tiempo hasta que haya cargado totalmente la pelicula */
function cargando() {
   _root.cuadro.loadMovie("file:///d:/sitios/ellnew2010/ell_alquiler.swf");   
   _root.cuadro._alpha = 0;
   // Declaración de variables
   var total, cargados, porcentaje;
   // A la variable "total" se le asigna el tamaño de la pelicula en bytes
   total = _root.cuadro.getBytesTotal();
   // A la variable "cargados" se le asignan el total de bytes hasta el
   //momento descargados de la web
   cargados = _root.cuadro.getBytesLoaded();
   //Por medio de una regla de tres obtiene el porcentaje cargado y redondea el valor con la función
   //"Math.floor"
   porcentaje = Math.floor((cargados*100)/total);
   //Asigna al campo de texto porcentaje_txt el porcentaje cargado
   porcentaje_txt.text = porcentaje + " %";
   //Mueve la barra de carga al frame correspondiente al porcentaje
//   barra_mc.gotoAndStop(porcentaje);
   //Si la cantidad de bytes cargados es igual a la cantidad total de bytes
   if (cargados == total) {
      //Hacer que se deje de ejeuctar esta función
      clearInterval(hiloPrecarga);
      //Iniciar la pelicula
      _root.cuadro._alpha = 50;
     
//     cuadro.play();
   }
}

// setInterval nos servira para que la función "cargando" se ejecute cada 1 milisegundo
// Asi, nuestra función revisara constantemente la cantidad de bytes descargados 
// y solo iniciara la pelicula hasta que la descarga termine
// la variable "hiloPrecarga" nos servira para saber que esta corriendo nuestra función
// y frenar su ejecución cada milisegundo por medio de "clearInterval"
var hiloPrecarga = setInterval(cargando, 1);

//Evita que inicie la pelicula
_root.cuadro.stop();


Estuve viendo en el Help de Flash8, la funcion "MovieClipLoader", pero tope con que segun lo que dice el Help, no se deben hacer
pruebas en forma local, por lo tanto ¿ que puedo hacer, desde mi pc, para probar dicha función ?

Sorry por este testamento, pero queria que me entendieran lo mejor posible.
Muchas gracias.

Por hecpok

43 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Dic 2009 03:39 am
Estas cargando una y una y otraaa vez el clip, jamás funcionará así. El setInterval te ejecuta todo cada 1 milisegundo (Demasiado exagerado dicho de paso). Usa esto:

Código ActionScript :

function cargando() { 
   // Declaración de variables 
   var total, cargados, porcentaje; 
   // A la variable "total" se le asigna el tamaño de la pelicula en bytes 
   total = cuadro.getBytesTotal(); 
   // A la variable "cargados" se le asignan el total de bytes hasta el 
   //momento descargados de la web 
   cargados = cuadro.getBytesLoaded(); 
   //Por medio de una regla de tres obtiene el porcentaje cargado y redondea el valor con la función 
   //"Math.floor" 
   porcentaje = Math.floor((cargados*100)/total); 
   //Asigna al campo de texto porcentaje_txt el porcentaje cargado 
   porcentaje_txt.text = porcentaje + " %"; 
   //Mueve la barra de carga al frame correspondiente al porcentaje 
//   barra_mc.gotoAndStop(porcentaje); 
   //Si la cantidad de bytes cargados es igual a la cantidad total de bytes 
   if (cargados == total) { 
      //Hacer que se deje de ejeuctar esta función 
      clearInterval(hiloPrecarga); 
      //Iniciar la pelicula 
      _root.cuadro._alpha = 50;       
//     cuadro.play(); 
   } 
} 
 

cuadro.loadMovie("file:///d:/sitios/ellnew2010/ell_alquiler.swf");    
cuadro._alpha = 0; 

var hiloPrecarga = setInterval(cargando, 300); 



Cuidado que le quite los "_root", asumiendo estas corriendo este código desde el primer frame de tu pelicula, si es así, ya estas en el root, ergo no necesitas volver a declararlo.

Por otra parte, ejecutar la función al principio es innecesario, ejecutar antes una función de su declaración no es bueno. El stop no sirve de nada antes de cargar una pelicula.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 29 Dic 2009 03:40 am
Me olvidaba de aclararte... Tampoco necesitas realmente poner todo el path absoluto, menos si luego lo irás a correr a otro lado. Usualmente lo mejor será poner la pelicula nada más.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 31 Dic 2009 09:57 pm
Muchas gracias HERNAN por tu ayuda....me aclaraste cualquier cantidad, el tema de las precargas.

Una sola duda cortita me quedo eso si. Respecto a numero 300 que pusiste en las intervalo.
¿ ese numero es un valor razonable para cualquier tipo de precargas independiente del tamaño de la pelicula ya sea pesada o liviana ? ¿ o es solamente para que coordine el valor del porcentaje con la descarga en si ?

Nuevamente muchas gracias x tu ayuda.
FELIZ AÑO 2010 amigo.

Por hecpok

43 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Dic 2009 10:16 pm
Son 300 milisegundos, o sea que la función evaluará cada 1/3 segundos que tal va nuestra carga. Es suficiente para los fines de cualquier humano, y a mi me gusta usar los recursos moderadamente, aunque en este caso, es por ser demasiado "histerico" jaja

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.