preloader en un swf ya cargado dentro de otro swf

Programació amb Actionscript

preloader en un swf ya cargado dentro de otro swf

EntradaAutor: manlous Data: dv. oct. 03, 2003 11:57 pm

?:-i

Despues de una cena "rotatoria", me asaltan dudas nocturnas....

A lo que vamos, flasheros. tengo una película "cargador" con su preloader, que funciona perfectamente; el problema es que cuando repito el preloader en una película que cargo dentro de "cargador" (con loadMovie), este me muestra un porcentaje fijo ("cargados 70 Kb de 70 Kb") y una barra ("loader") que no se ajusta a la carga.

He probado de utilizar un _parent. en totalBytes y bytesLoaded, para designar la carga del .swf que me interesa. El caso es que no se si está bien, ya que trabajando en local va muy rapido, y colgado en la Web no me queda claro...

Si me podeis aclarar la duda, os estaré muy agradecido.

Salud para todos¡¡¡¡
Hola amigos ¡¡¡¡ heme aquí, con montones de dudas, y, espero, con alguna respuesta. Un saludo a todos los scripters ¡¡¡¡
Avatar de l’usuari
manlous
mig pingu
mig pingu
 
Entrades: 13
Membre des de: dg. ago. 24, 2003 10:37 am
Ubicació: En el huevo

EntradaAutor: karlos Data: dg. oct. 05, 2003 8:12 pm

:--) veamos, entonces parece ser que algo falla... ::-)

jeje, bueno pues sin ver el preloader y cómo lo llamas, es dificil ver el problema. ¿los 70 kb son de la primera pelicula? ¿cómo inicias el preloader y le indicas la película de la que tiene que controlar la carga?

diria que no pilla la info del movieclip correcto, ya que si estas cargando una pelicula dentro de la pelicula cargada, es otro movieclip que el de la primera carga. O bien es que el script que se encarga de mostrar el proceso de carga no se inicializa, esta parado en la segunda llamada... :-~

para el problema de trabajar en local con los preloaders lo que hago a veces es subir las peliculas a cargar al servidor, y desde el flash (en local) pongo en el loadMovie la url completa del archivo a cargar (loadMovie("http://miservidor/lacarpeta/peliculaparacargar.swf"....), de esta forma puedes probar la pelicula en local pero cargando las otras desde internet, y depurando la peli principal en el entorno de flash (poniendo traces para ver por donde va la ejecución del script, etc...). Despues se deja el loadmovie tal como tiene que estar, con la url relativa.

detalla un poco más el problema con código y miramos de encontrar el fallo. :-D
Imatge
<rA<k th3 2y273m :?-:: fr33 y0ur m1nd
Avatar de l’usuari
karlos
pingu hacker
pingu hacker
 
Entrades: 290
Membre des de: dl. feb. 10, 2003 12:46 pm
Ubicació: otra dimension

EntradaAutor: manlous Data: dc. oct. 08, 2003 10:34 am

tomatoma

Gracias Karlos, de entrada ya me has aclarado varias cosas. Como decias, los "70 de 70 Kb" corresponden a la película cargador, o sea, que las películas que cargo dentro recogen los datos "totalbytes" y "loadedbytes" de la película principal.

En los tres primeros frames del preloader de la película principal tengo el siguiente script:
Codi: Selecciona’ls tots
totalbytes = getBytesTotal();
loadedbytes = getBytesLoaded();
loadedkbytes = Math.ceil(loadedbytes/1000);
totalkbytes = Math.ceil(totalbytes/1000);
frame = Math.ceil((100*loadedkbytes)/totalkbytes);
if ((totalkbytes-(totalkbytes-loadedkbytes))>0) {
   percent = " · cargando " add (Math.ceil(totalkbytes-(totalkbytes-loadedkbytes))) add [" Kb "] add "de " add totalkbytes add [" Kb ·"];
}


en el cuarto frame tengo el siguiente script (en el quinto tengo la etiqueta "start"):
Codi: Selecciona’ls tots
totalbytes = getBytesTotal();
loadedbytes = getBytesLoaded();
loadedkbytes = Math.ceil(loadedbytes/1000);
totalkbytes = Math.ceil(totalbytes/1000);
frame = Math.ceil((100*loadedkbytes)/totalkbytes);
if (loadedbytes == totalbytes) {
   gotoAndPlay("start");
} else {
   gotoAndPlay(2);
}
if ((totalkbytes-(totalkbytes-loadedkbytes))>0) {
   
percent = " · cargando " add (Math.ceil(totalkbytes-(totalkbytes-loadedkbytes))) add [" Kb "] add "de " add totalkbytes add [" Kb ·"];
}
//el clip loader y el campo dinamico con "percent", estan dentro de un clip cargador
_root.cargador.loader.gotoAndPlay(frame);

**para llamar a la variable "percent" desde el campo dinamico que está dentro del clip "cargador", utilizo _root.percent como nombre de variable.

Con este script el preloader de la película principal funciona¡¡¡

Para cargar las peliculas secundarias utilizo clips vacios y en la linea de tiempo principal:
Codi: Selecciona’ls tots
vacio.loadMovie("fondoPrincipal.swf", 0);
vacio2.loadMovie("menuTop.swf", 1);
vacio3.loadMovie("ticker.swf", 2);

En las películas secundarias utilizaba el mismo preloader que tienes arriba, pero al ver que no funcionaba, cambié el preloader en los frames 1 y 4:
Codi: Selecciona’ls tots
totalbytes = _parent.getBytesTotal();
loadedbytes = _parent.getBytesLoaded();

para designar a las variables que se refirieran a si mismas (a la película secundaria).

**para llamar a la variable "percent" desde el campo dinamico que está dentro del clip "cargador", utilicé _parent.percent como nombre de variable.

Sigue sin funcionar¡¡¡
Por lo que me escribiste en tu contestación, entiendo que no se inicializan las variables y por eso no funciona el preloader de las películas secundarias.

A ver si me podeis aclarar que tengo que hacer...[/code]
manlous l’ha editat per darrera vegada el dia: dj. oct. 16, 2003 10:02 pm, en total s’ha editat 1 vegada.
Hola amigos ¡¡¡¡ heme aquí, con montones de dudas, y, espero, con alguna respuesta. Un saludo a todos los scripters ¡¡¡¡
Avatar de l’usuari
manlous
mig pingu
mig pingu
 
Entrades: 13
Membre des de: dg. ago. 24, 2003 10:37 am
Ubicació: En el huevo

EntradaAutor: karlos Data: dc. oct. 08, 2003 6:35 pm

:--) mmmm interesante....... :-D

manlous ha escrit:`....
Para cargar las peliculas secundarias utilizo clips vacios y en la linea de tiempo principal:

vacio.loadMovie("fondoPrincipal.swf", 0);
vacio2.loadMovie("menuTop.swf", 1);
vacio3.loadMovie("ticker.swf", 2);

En las películas secundarias utilizaba el mismo preloader que tienes arriba, pero al ver que no funcionaba, cambié el preloader en los frames 1 y 4:

totalbytes = _parent.getBytesTotal();
loadedbytes = _parent.getBytesLoaded();

para designar a las variables que se refirieran a si mismas (a la película secundaria).

**para llamar a la variable "percent" desde el campo dinamico que está dentro del clip "cargador", utilicé _parent.percent como nombre de variable.
...


si has repetido el script en las otras peliculas debes quitar el _parent, excepto en la linea para mostrar la información del loader

manlous ha escrit:...
//el clip loader y el campo dinamico con "percent", estan dentro de un clip cargador
_root.cargador.loader.gotoAndPlay(frame);
......


para que todas usen el mismo clip "cargador.loader", en las subpeliculas debes cambiar esa linea por una llamada relativa a _parent

Codi: Selecciona’ls tots
_parent.percent = percent
_parent.cargador.loader.gotoAndPlay(frame)


no tengo claro donde tienes el campo dinámico "percent", ya que segun el script parece que esta al mismo nivel, en la película principal pero en tu comentario indicas que esta dentro del clip "cargador" ¿todos los scripts estan dentro de "cargador"? :-~

bueno, en resumen, que en la pelicula principal lo dejas tal y como esta, y en las otras lo copias igual excepto el cambio que te digo. Mira si asi te funciona, aunque el clip "cargador.loader" debe estar en la escena de la pelicula principal junto con el clip vacio donde se carga la subpelicula, sino no te saldra nada. Aunque al comentar que te salia "70 Kb de 70 Kb" entiendo que sigue estando presente.

Ya diras el resultado, y sino te funciona le pegamos un repaso completo al código que tiene algunas cosas que se podrian mejorar.
-_:-:_-._- Disculpame pero tengo que seguir entrenandome fuuu -_:-:_-._- fu fu fuuu ::-::
Imatge
<rA<k th3 2y273m :?-:: fr33 y0ur m1nd
Avatar de l’usuari
karlos
pingu hacker
pingu hacker
 
Entrades: 290
Membre des de: dl. feb. 10, 2003 12:46 pm
Ubicació: otra dimension

EntradaAutor: manlous Data: dv. oct. 10, 2003 10:52 am

;-) ;-) ;-)
Ahora funciona¡¡¡¡

Aclarar primero que el script que hay arriba está en la escena (frames 1 y 4). Para facilitarme el cambiar de forma el preloader (escalarlo, tintarlo), metí dentro de un clip (cargador) tanto el campo de texto dinámico como el clip de la barra de carga (loader).

Para facilitar el trabajo he sacado la barra de carga (loader) y el campo dinámico del clip (cargador) y los he puesto directamente en la escena; más que nada, por que para llamar a la variable "percent" desde el campo dinámico tenía que utilizar como nombre de variable _root.percent, al estar dentro de un clip (si no, no funcionaba).

He añadido la linea que me decias en las películas secundarias:

Codi: Selecciona’ls tots
_parent.percent = percent


aunque la siguiente linea, que controla la barra de carga (loader), parece no funcionar bien en el servidor:

Codi: Selecciona’ls tots
_parent.loader.gotoAndPlay(frame)


Supongo que no tengo bien controlada la barra de carga (loader) ii-:: .
Me decias que el script se podia mejorar, era esta parte una de las que se podian mejorar?

Otra cosa que percibo es que cuando cargan, las películas secundarias tardan en mostrar el preloader (una vez en internet), aunque el campo dinamico y "loader" esten desde el frame 1 hasta el 4. Es un problema del codigo o es que se muestran así los .swf cargados con loadMovie?

Bueno, nada más que >I:!< >I:!< por los consejos.... el que sabe sabe....

te debo unas :b:

Ante todo, gracias :-D ahora al menos he salido del atolladero ;-) ;-)
Hola amigos ¡¡¡¡ heme aquí, con montones de dudas, y, espero, con alguna respuesta. Un saludo a todos los scripters ¡¡¡¡
Avatar de l’usuari
manlous
mig pingu
mig pingu
 
Entrades: 13
Membre des de: dg. ago. 24, 2003 10:37 am
Ubicació: En el huevo

solucíó final

EntradaAutor: manlous Data: dt. oct. 14, 2003 4:18 pm

TEMA SOLUCIONADO¡¡¡¡¡¡ :-D

He simplificado el preloader, y ahora funciona perfectamente; el código para la pelicula cargada con loadMovie ha quedado asi:

en el fotograma 1 y 2 tengo el campo dinamico con la variable "percent", y el movieclip "loader" con la barra de carga.

En el fotograma 2 tengo el siguiente código:

Codi: Selecciona’ls tots
totalbytes = getBytesTotal();
loadedbytes = getBytesLoaded();
loadedkbytes = Math.ceil(loadedbytes/1000);
totalkbytes = Math.ceil(totalbytes/1000);
frame = Math.ceil((loadedkbytes/totalkbytes)*100);
if (loadedbytes == totalbytes) {
   gotoAndPlay("start");
} else {
   gotoAndPlay(1);
}
if ((totalkbytes-(totalkbytes-loadedkbytes))>0) {
   percent = " · cargando " add (Math.ceil(totalkbytes-(totalkbytes-loadedkbytes))) add [" Kb "] add "de " add totalkbytes add [" Kb ·"];
}
_parent.percent = percent;
_parent.frame = frame;
loader.gotoAndPlay(frame);


De esta manera, funciona todo bien (para la pelicula secundaria); he conseguido simplificar el codigo, y con las indicaciones de Karlos, que funcionara también el clip loader.

//*\:-:-|| me he peleado con el código, pero ahora ya tengo preloader para películas cargadas con loadMovie (y vosotros también, miraos el resumen de arriba).

<|:-) <|:-) <|:-) <|:-) <|:-) <|:-) <|:-) <|:-) <|:-) <|:-) <|:-)

Un saludo a todos¡¡¡
Hola amigos ¡¡¡¡ heme aquí, con montones de dudas, y, espero, con alguna respuesta. Un saludo a todos los scripters ¡¡¡¡
Avatar de l’usuari
manlous
mig pingu
mig pingu
 
Entrades: 13
Membre des de: dg. ago. 24, 2003 10:37 am
Ubicació: En el huevo


Torna a: Actionscript

Qui està connectat

Usuaris navegant en aquest fòrum: No hi ha cap usuari registrat i 3 visitants

cron