Foros del Web » Creando para Internet » Flash y Actionscript »

¿Preload para swf externos como el de Phivian?

Estas en el tema de ¿Preload para swf externos como el de Phivian? en el foro de Flash y Actionscript en Foros del Web. Ya comenté en otro post que: … pensaba que me estaba funcionando bien un preload que funciona bien por separado (si lo pruebo en el ...
  #1 (permalink)  
Antiguo 23/03/2006, 06:37
Avatar de Midai  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid - España
Mensajes: 134
Antigüedad: 19 años, 1 mes
Puntos: 1
¿Preload para swf externos como el de Phivian?

Ya comenté en otro post que:

… pensaba que me estaba funcionando bien un preload que funciona bien por separado (si lo pruebo en el simulador de descarga de Flash o si cargo la película en un htm), pero que funciona mal si lo cargo mediante el LoadMovie, o sea, llamando a esa película que tiene ese preload desde un botón de otra película. Me he dado cuenta de que funciona mal porque hice una película de imágenes que pesan mucho y, al llamar al swf que las contiene, me sale desde el principio el 100% completado en el preload, pero sólo al cabo de mucho rato empiezan a aparecer las imágenes que aún así tardan mucho en terminarse de cargar y mostrarse…

Lo que necesito es que funcione como en la página de Phivian cuando le da a cualquier botón del menú (http://www.phivian.com/), aunque no necesito ni barra ni bytes cargados, sólo el porcentaje.

El preload lo tengo en la película que llamo a cargar con un botón en la película principal, y el código es éste:


function cargando() {
var total, cargados, porcentaje;
total = _root.getBytesTotal();
cargados = _root.getBytesLoaded();
porcentaje = Math.floor((cargados*100)/total);
porcentaje_txt.text = porcentaje + " %";
if (cargados == total) {
clearInterval(hiloPrecarga);
play();
}
}
var hiloPrecarga = setInterval(cargando, 1);
stop();


En el botón que tiene que cargar el swf externo tengo esto:
on (release) {
gotoAndPlay ("escena",8);
}

En el frame 8 de la película que contiene el botón tengo esto:
loadMovie("imagenes.swf", "loquesea");

Y en el frame 1 de la misma película principal tengo esto:
this.createEmptyMovieClip ("loquesea",1);


He visto que varios han tenido el mismo problema. Ivanhoe el 12/10/2005 decía que tal vez había que cambiar el _root por this en el preload, pero al hacerlo le salía en el porcentaje “NAN %”. A mí me ha pasado lo mismo. También Rmaster tuvo un problema parecido el 28/7/2005 y Leftside le contestó que “Por ejemplo: si cargás la movie en el nivel 1 tenés que corregir
total = _root.getBytesTotal();
por:
total = _level1.getBytesTotal();

porque si no sigue mirando el nivel 0 y ese ya está cargado.”

Pero probé a realizar esa sustitución que dice Leftside y me sale “Infinity” en el porcentaje, o “NAN%” si además sustituyo el _root por el this en “cargados”.

Incluso he probado a poner en la película principal un preload para la película a la que llama:

En el primer frame he puesto:


stop();
var vacio:MovieClip = this.createEmptyMovieClip("vacio", 4);
var loop:MovieClip = this.createEmptyMovieClip("loop", 3);
function cargador(swf) {
vacio.loadMovie(swf);
}
loop.onEnterFrame = function() {
total = vacio.getBytesTotal();
cargados = vacio.getBytesLoaded();
t = int((cargados*100)/total);
porcentaje_txt.text = t + “%”;
if (t>=100) {
delete loop.onEnterFrame;
loadMovie("imagenes.swf","loquesea");
}
}


y en el último frame también de la película principal he puesto:

cargador("imagenes.swf");


Pero debo tener varias cosas mal porque, aunque me carga la película imagenes.swf, el porcentaje de carga no se ve y la película que carga se muestra mucho antes de que esté completamente cargada.

Disculpas por el post tan largo, pero es por si podíais echarme una mano viendo los códigos que tengo y todo lo que he probado.

Gracias y un saludo,
Midai
  #2 (permalink)  
Antiguo 23/03/2006, 10:51
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 20 años, 8 meses
Puntos: 406
Hola Midai:
Crea un MC y le colocas un campo de texto dinámico con var: per_out
Al colocar éste MC en la capa 1 frame 1 le pones éste código al MC:
onClipEvent(enterFrame){
movieClip_a_cargar=_parent;
bl=movieClip_a_cargar.getBytesLoaded();
bt=movieClip_a_cargar.getBytesTotal();
per=int((bl/bt)*100);
cambia._width=per*barw;
if(per==100){_parent.gotoAndStop(2);}
per_out=per+"%";
}
En la capa 2 frame 2 debe de empezar tu película.
En la capa 3 frame 1 coloca un stop();

Este loader lo puedes usar en todas tus película.

Espero haberte sido de ayuda.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #3 (permalink)  
Antiguo 23/03/2006, 15:47
Avatar de Midai  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid - España
Mensajes: 134
Antigüedad: 19 años, 1 mes
Puntos: 1
Gracias por la ayuda, Bandit, pero creo que me he explicado mal o no me entero bien de dónde tengo que colocar el Mc que me dices.

Lo que necesito es que, al darle a un botón en la película1.swf, se abra la película2.swf con un preload que cargue la película2.swf y no se empiece a ver hasta que no se cargue del todo. Creo que el código que me das es para cargar un MovieClip, no un swf externo (que es lo necesito cargar).
Si ya entendiste esto mismo, entonces es que la que no entiende tu ayuda soy yo. En este caso, ¿dónde va el MC que me dices que cree, en la película1.swf o en la película2.swf? Y también: ¿cómo creo el Mc en el que pongo el texto dinámico?, ¿poniendo en el primer frame lo siguiente: this.createEmptyMovieClip("loquesea",1);?
¿o a través de crear un cuadrado alfa 0% que convierto en Mc y dentro del cual meto el texto dinámico con variable per_out?
Y más ¿la parte de tu código en la que pone "cambia" la tengo que dejar así?, ¿y en la parte en la que pone "movieClip_a_cargar" tengo que ponerle el nombre del Mc creado según la última interpretación que te pongo o tengo que ponerle el nombre de la película2.swf que quiero cargar, o el nombre de la película dentro de la que se encuentre? Esta última pregunta es sobre todo la que me hace pensar que tú te refieres a cargas de Movieclips y no de películas.swf. Y también he probado algunas o todas las posibilidades que te pongo aquí como dudas (ya no sé, porque me estoy volviendo medio majara) y no me funciona.

Si pudieras aclararme las dudas te lo agradecería infinito porque si no voy a acabar con mi salud mental de tanto probar cosas sin que funcione nada ,
Midai
  #4 (permalink)  
Antiguo 24/03/2006, 09:08
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 20 años, 8 meses
Puntos: 406
Pense que sabías que todos los preloader se colocan en el primer frame de la película, por tal razón no te dije donde ponero.
En primer lugar no existe un preloader para cargar un MC, porque los MC están dentro de la misma película, no se de donde sacas que mi código hace eso.
Los preloader son para cargar películas externas.
El MC que contiene el campo de texto, tienes que ponerlo en el escenario principal capa 1 frame1.

la parte del código que dice: cambia es para mostrar la barra de carga. como tú querías solamente el porcentaje, déjalo asi:

Espero haberte sido de ayuda.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #5 (permalink)  
Antiguo 26/03/2006, 13:23
Avatar de Midai  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid - España
Mensajes: 134
Antigüedad: 19 años, 1 mes
Puntos: 1
Hola, Bandit:

Mi duda era si tenía que colocar el preload en la película 1 o en la película 2. Lo de que se tenía que colocar en el primer frame ya lo sabía, bueno, antes lo colocaba en una escena que sólo contenía el preloader y la situaba antes que la escena que contenía la película principal. Pero luego me he fijado mejor en que me dices al final que lo puedo colocar en todas mis películas, con lo que tu respuesta indica que lo coloque en ambas, en la película 1 y en la 2.

Pensé que tu código era para cargar un movieclip porque en el código ponía "movieClip_a_cargar", y pensé que, tal como dice, cargaría un movieclip, pero no llamaría a la película2. Luego de darle vueltas entendí lo que querías decirme: que yo tenía que llamar a la película2 antes de que se ejecutase el código que me das, porque tu código no la llamaba (yo pensaba que el código que necesitaba debía llamar a la película2). Al fin me ha funcionado haciendo lo siguiente (por si a alguien le sirve en el futuro):

En la película 1 llamo a la película2 para que se cargue directamente desde un botón de la película1, así:

on (release) {
this.loadMovie("pelicula2.swf");
}

Y en la película2 he puesto tu código, Bandit, cambiando la parte que dice "movieClip_a_cargar" por el nombre que le he puesto al movieclip; el movieclip lo he creado con la función Ctrl+F8, le he metido dentro un campo de texto dinámico con el nombre per_out en la variable, y luego lo he llevado de la biblioteca al frame1 de la capa1 de la película2.swf. En el segundo frame está todo el contenido de la película2 (capa2) y en la capa 3 frame 1 he puesto un stop();, tal como decías.

Y bueno, ¡¡funciona perfecto!! Te agradezco muchísimo la ayuda, Bandit. Un saludo que cruce el charco,
Midai
  #6 (permalink)  
Antiguo 26/03/2006, 13:44
Avatar de Acadio  
Fecha de Ingreso: octubre-2005
Mensajes: 48
Antigüedad: 18 años, 4 meses
Puntos: 0
Te paso un link de cristalab donde exlican como hacer un Preloader para cargas externas de swf y imagenes.

http://www.cristalab.com/tutoriales/...oviecliploader

Espero que sea de ayuda.

Un Saludo.
  #7 (permalink)  
Antiguo 27/03/2006, 09:36
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 20 años, 8 meses
Puntos: 406
Hola Midai:
Me alegro que ya te funcione el preloader.
No te olvides que todo preloader se pone en el primer frame de cada película, es para que cargue completamente cada una de ellas antes de ser mostrada.

Saludos.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/

Última edición por Bandit; 29/03/2006 a las 08:51
  #8 (permalink)  
Antiguo 29/03/2006, 04:47
Avatar de Midai  
Fecha de Ingreso: febrero-2005
Ubicación: Madrid - España
Mensajes: 134
Antigüedad: 19 años, 1 mes
Puntos: 1
Hola, Acadio y Bandit:

He guardado el link que envías, Acadio, para probarlo más adelante. Gracias por tu ayuda, no he tenido tiempo de probarlo. El que me dio Bandit funciona muy bien, pero nunca está de más saber hacer las cosas de varias formas. Y tendré en cuenta lo que me dices, Bandit, aunque pensaba que poner el preload en la primera escena de una película de varias escenas tenía el mismo efecto que ponerlo en el primer frame de una película de una única escena, que eso también cargaba el resto de las escenas de la película antes de mostrarla (al menos con el preload que yo utilizaba y traje al principio de este post).

Saludos ,
Midai
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:31.