Laburo España: 250.000 ofertas de empleo

neomode en la web

programación, diseño web y diseño gráfico
Los preloaders tradicionales no funcionan si abusamos de attachMovie...

Si nuestra película se compone de varios clips que cargamos con attachMovie lo más probable es que los hayamos tenido que vincular señalando en las opciones de vinculación la de "Exportar en primer fotograma" y "Exportar para Action Script" que es como estamos acostumbrados a hacerlo. Ahora bien, de esta forma prácticamente todo el peso de la película se concentra en el primer fotograma. Esto hará que hasta que no esté complementamente cargado el primer fotograma no se avance hasta el siguiente, y cuando esto ocurre, resulta que la película ya está cargada casi al 100% por lo que no se ve el avance en el preloader.

La solución viene de la mano de una película cargador que se encargue de cargar nuestra película principal. Se recomienda que ambas tengan las mismas dimensiones. En la película cargador crearemos un clip de película vacío que utilizaremos como contenedor de la película principal. Además crearemos un clip de película con la animación que queremos se vea durante la carga. En el ejemplo ese clip está vinculado (botón derecho del ratón sobre el clip en la Biblioteca y seleccionar Vinculación) con el nombre de "preloader".

::: Código :::

El código para el primer fotograma de la línea de tiempo principal en la película cargador sería:
cargaPelicula = function (){
  // creamos el clip de película vacio que servirá de contenedor
  this.createEmptyMovieClip("contenedor_mc", 1);
  // cargamos la película principal en el contenedor
  contenedor_mc.loadMovie("intro.swf");
  // añadimos el clip preloader a nuestro escenario
  attachMovie("preloader", "preloader_mc", 2);
  // posicionamos el preloader en el escenario
  preloader_mc._x = 200;
  preloader_mc._y = 150;
}
// llamamos a la funcion
cargaPelicula();

En el primer fotograma del clip de película preloader podemos poner algo así:

this.onEnterFrame = function (){
     // Hallamos el tanto por ciento de película cargada
  porCiento = int ((_root.contenedor_mc.getBytesLoaded()/_root.contenedor_mc.getBytesTotal())*100);
  // Si se ha terminado de cargar...
  if (porCiento == 100) {
     // liberamos recursos...
     this.unloadMovie();
     delete this.onEnterFrame;
  } else {
        // Actualizamos el cuadro de texto
     txtPorCiento = porCiento;
  }
}
Donde porCiento es una variable local que usaremos para tal fin y txtPorCiento es un cuadro de texto dinámico en el clip preloader donde visualizaremos el tanto por ciento de película cargada.


NOTA: Hay que tener en cuenta que de esta forma todas las rutas a clips de película en la película cargada deben hacer referencia a su línea de tiempo principal como _parent y no como _root , puesto que al cargarse en la película cargador _root será la línea de tiempo de ésta última.
Anotación por Mode Martínez Palenzuela a las 09:01:27 | Comentarios (0)
Guardado en la categoría Flash | Referencias (0)

Referencias:

Dirección para referencias

neomode en la web ni su autor se hacen responsables de los comentarios aqui hechos. Cualquier comentario insultante o fuera del tema, será borrado.

Comentarios:


Escribe tu comentario
HTML Permitido. Correo electrónico no se muestra.


Recordar datos

< Regresa a la portada

Copyleft Mode Martínez Palenzuela - Granada - Andalucía - España

Sindica este sitio usando: RSS 1.0, RSS 2.0, Atom. Esta bitácora se mantiene con Bitacorae.
LaInformacion.com lainformacion.com - Medio Oficial de los Premios Bitacoras 2009