Comunidad de diseño web y desarrollo en internet online

Cargar totalmente un swf, y sólo entonces cargar una capa +

Citar            
MensajeEscrito el 29 Jul 2009 04:29 pm
Hola.

estoy tratando de conseguir lo siguiente.
Necesito comprobar que un swf se ha cargado al 100% y sólo entonces cargar una capa por encima en otro swf.

lo he intentado con este código, pero no me funciona:

Código ActionScript :

onClipEvent (load) {
   // cargamos el total de bytes de la peli
   btotales = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
   // ahora vamos a ir cargando los bytes de la peli...
   bcargados = _root.getBytesLoaded();
   // ...y si esto se cumple ...
   if (bcargados>=btotales) {
      // ...procedemos a cargar la peli
      _root.loadMovieNum(inicio_fotos.swf, 2)
} 
}

El código está metido en un movieclip, y he utilizado otras veces este código algo modificado para hacer una barra de carga, calculando el % de carga.
En este caso he eliminado la parte que calcula el % y te envía a un fotograma.
Reconozco que no controlo mucho del asunto, y ando perdido.

gracias de antemano por la ayuda.
Juan

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jul 2009 04:46 pm
En principio, olvidaste unas comillas y borrar el onEnterFrame para que no esté recargando todo el tiempo

_root.loadMovieNum("inicio_fotos.swf", 2)
delete this.onEnterFrame

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Jul 2009 05:10 pm
gracias solisarg,
Pues sigue sin funcionarme.
he arreglado según me decía solisarg y he dejado el código así:

Código ActionScript :

onClipEvent (load) {
   // cargamos el total de bytes de la peli
   btotales = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
   // ahora vamos a ir cargando los bytes de la peli...
   bcargados = _root.getBytesLoaded();
   // ...y si esto se cumple ...
   if (bcargados>=btotales) {
      // ...procedemos a cargar la peli
      _root.loadMovieNum("inicio_fotos.swf", 2)
delete this.onEnterFrame
} 
}


gracias por la ayuda.
juan

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jul 2009 05:14 pm
Bien, vamos a tratar de avanzar del nivel "me funciona/no me funciona"
Pregunto: ¿Se ejecuta el if? ¿Como saberlo? Agrega un trace dentro:

trace("Cargando intro")
_root.loadMovieNum("inicio_fotos.swf", 2)
...


Jorge

PD: Por favor, usa los tags as http://foros.cristalab.com/mi-codigo-legible-t55926/

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Jul 2009 05:26 pm
Hola de nuevo, y disculpa por lo del código, no lo conocía, y de hecho estuve buscando antes al ver que me los había puesto alguien. gracias

He metido lo que me comentaste y no hace nada tampoco.
He dejado la cosa así:

Código ActionScript :

onClipEvent (load) {
   // cargamos el total de bytes de la peli
   btotales = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
   // ahora vamos a ir cargando los bytes de la peli...
   bcargados = _root.getBytesLoaded();
   // ...y si esto se cumple ...
   if (bcargados>=btotales) {
      trace("Cargando intro")
      _root.loadMovieNum("inicio_fotos.swf", 2) 
      // ...procedemos a cargar la peli
      _root.loadMovieNum("inicio_fotos.swf", 2)
delete this.onEnterFrame
} 
}


Por lo que parece que entonces ese if no debe de funcionar ¿no?

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jul 2009 05:29 pm
El trace imprime un mensaje que debes ver dentro de Flash, si no loi ves es porque no se ejecuta, prueba moviendo el total dentro del onEnterFrame

Código ActionScript :

onClipEvent (enterFrame) { 
   btotales = _root.getBytesTotal(); 
   bcargados = _root.getBytesLoaded(); 
   .... etc


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Jul 2009 05:49 pm
He probado de estos dos modos, por que dada mi ignorancia no sabía exactamente cual era la opción buena.
El caso es que no me funciona ninguna... :-(
Estoy realmente perdido...


Código ActionScript :

onClipEvent (enterFrame) {
   btotales = _root.getBytesTotal();
   bcargados = _root.getBytesLoaded();
      if (bcargados>=btotales) {
      // ...procedemos a cargar la peli
      _root.loadMovieNum("inicio_fotos.swf", 2)
delete this.onEnterFrame
} 
}


------------------------

Código ActionScript :

onClipEvent (load) { 
   btotales = _root.getBytesTotal(); 
} 
onClipEvent (enterFrame) { 
   bcargados = _root.getBytesLoaded(); 
   btotales = _root.getBytesTotal(); 
   if (bcargados>=btotales) { 
      _root.loadMovieNum("inicio_fotos.swf", 2) 
delete this.onEnterFrame 
}  
}

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jul 2009 05:52 pm
Con esto es suficiente, vamos a agregarle un trace para ver si se ejecuta el onEnterFrame, y una condición extra en el if:

Código ActionScript :

onClipEvent (enterFrame) {    
   bcargados = _root.getBytesLoaded();  
   btotales = _root.getBytesTotal();  
   trace(bcargados+" y "+btotales)
   if (bcargados>=btotales && btotales>4) {  
      _root.loadMovieNum("inicio_fotos.swf", 2)  
   delete this.onEnterFrame  
   }
}  


Ahora deberías ver (dentro de Flash, al darle Ctrl+Enter) algún trace con los parciales de carga

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Jul 2009 06:05 pm
Pues no me sale nada...
Lo he probado en el navegador y abriendo el propio swf con flashplayer por si las moscas, y nada de nada.

te agradezco mucho tu ayuda, porque estoy más perdido que un pulpo en un garaje.

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jul 2009 10:42 pm
Ok, ya veo, NPI
Bien, no sale un trace de un onEnterFrame, ¿está el MovieClip que tiene asociado este código en el escenario? En opciones de publicación, Flash tab, asegúrate de no tener marcado que omita los trace. Los trace salen UNICAMENTE dentro de Flash, es decir cuando con Flash abierto haces Ctrl+Enter (publicar)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2009 08:42 am
Pues, la verdad es que esto del Trace es la primera vez que lo pruebo, así que si NPI ;-)

Bien, el movieclip está en el escenario ofcourse, puedo verlo al publicar el swf.
Entiendo ahora lo del trace. Se hace desde el propio flash... que ignorancia la mia, sorry.

Lo he hecho, he dado ctrl+enter, se publica la peli y no pasa nada excepto que en la ventana "salida" se escribe sin parar un "44865 y 44865"

¿vamos por el buen camino?

gracias de nuevo

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jul 2009 10:52 am
Bien, eso quiere decir que esta cargado, Ahora después del if agrega esto y dime si sale en el trace:

Código ActionScript :

if (bcargados>=btotales && btotales>4) {   
   trace("Cargando inicio_fotos.swf")


El trace anterior lo puedes quitar porque ya sabemos que está ejecutando el onEnterFrame. Si vez este trace, quiere decir que entra en la condición y hace la carga

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2009 11:35 am
¡¡Hecho!!

veamos, he hecho lo que me dices, y me responde:
Cargando inicio_fotos.swf

con lo que parece que funciona hasta aquí.

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jul 2009 11:38 am
Correcto, lo está cargando, el problema es que no lo vez. Para asegurarte, en vez de cargar inicio_fotos.swf, cárgate una peli donde le pongas un cuadradote rojo bien grande y visible. ¿La carga, la vez? Si es así, también está cargando la otra peli, pero el problema está en otro lado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2009 12:17 pm
Sigue sin funcionar :(

Te comento los pasos que he dado por si hubiese algún problema.
He creado un swf que contiene únicamente un gran cuadrado de color, y se llama nada.swf.
He modificado el código del movieclip, y lo he dejado así:

Código ActionScript :

onClipEvent (enterFrame) {     
   bcargados = _root.getBytesLoaded();   
   btotales = _root.getBytesTotal();   
   if (bcargados>=btotales && btotales>4) {   
      loadMovieNum("nada.swf", 3);
   delete this.onEnterFrame   
  } 
   }


Como no me funcionó, pensé que podría haber algo que me diese el problema en el flash que contiene al moviecip con el código de carga, así que cree un nuevo flash en el que únicamente hay el movieclip con el código, y así tampoco me funciona.
No se qué más probar ¿se te ocurre algo?

Muchas gracias por tu paciencia
Juan

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jul 2009 12:25 pm
Bien, asumo que nada.swf tiene un solo fotograma con un cuadradote rojo, entonces lo que deberías poner es

_root.loadMovieNum("nada.swf", 3);

Si no ves el cuadrado, estamos con un problema de niveles. Podemos pasar a usar un MovieClip, que es mas simple. Crea un nuevo MovieClip vacío (menu Insertar, Nuevo Simbolo, MovieClip), lo verás como un círculo sin relleno (porque está vacío), lo seleccionas y le pones nombre de instancia "holder" y luego usas:

_root.holder.loadMovie("nada.swf");

Puedes mover holder a la posición donde deseas que el cuadrado aparezca

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2009 02:30 pm
Pues la cosa sigue sin funcionar.

He creado al holder Movieclip, y he cambiado al código tal cual me recomiendas y no se carga el cuadrado ni a tiros.
Como ya dudo de todo, he probado a hacer un loadMovieNum("nada.swf", 3); en la linea de tiempos por si es que no ve al nada.swf, y lo carga sin problema, así que el fallo debe de estar en el código:

[as]onClipEvent (enterFrame) {
bcargados = _root.getBytesLoaded();
btotales = _root.getBytesTotal();
if (bcargados>=btotales && btotales>4) {
_root.holder.loadMovie("nada.swf");
delete this.onEnterFrame
}
}

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jul 2009 02:33 pm
vaya, se me ha cortado de nuevo el mensaje, aunque lo interesante no se ha cortado.

Por cierto, no encuentro donde puedo editar un mensaje ya enviado. ¿se puede hacer?

Gracias de nuevo

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jul 2009 02:39 pm
Crealo por código en vez de hacerlo authortime. Quita holder y pon:

Código ActionScript :

if (bcargados>=btotales && btotales>4) {
  holder = _root.createEmptyMovieClip("holder", 1)
  holder.loadMovie("nada.swf");


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2009 03:16 pm
Lamento seguir dándote la paliza, pero sigue sin funcionarme...

Me imagino que cuando te refieres a no usar Authortime te refieres a que no use el asistente de cript ¿no?

El código ha quedado así:

Código ActionScript :

onClipEvent (enterFrame) {     
   bcargados = _root.getBytesLoaded();   
   btotales = _root.getBytesTotal();   
  if (bcargados>=btotales && btotales>4) { 
  holder = _root.createEmptyMovieClip("holder", 1) 
  holder.loadMovie("nada.swf"); 
   delete this.onEnterFrame   
  } 
   } 


Como prueba, le puse también un nombre erróneo al swf (dhgsdfhd.swf) y al hacer crtl+enter me avisaba del error, con lo que en los otros casos que no da error lo encuentra sin problemas.

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jul 2009 03:23 pm
En una peli nueva pon esto en el primer fotograma

holder = _root.createEmptyMovieClip("holder", 1)
holder.loadMovie("nada.swf");

Guarda el archivo en el mismo directorio que nada.swf y prueba si funciona

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2009 03:33 pm
esto último me funciona bien.

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jul 2009 03:36 pm
Bien, la diferencia es que en el otro lo estás haciendo desde dentro de un botón ... dale vueltas, hay algo en el contexto que evita que lo puedas ver

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2009 03:52 pm
¿Desde un botón? está en un movieclip ¿tiene que ser un botón? a ver si este es el lio.
En cuanto al contexto, es que no hay nada, lo estoy probando en proyectos nuevos limpios, de hecho en el que pruebo no hay nada excepto el movieclip "holder" que está vacio, y que es al que le aplico el código.

Menudo lio...

Por lesta

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jul 2009 03:54 pm
Puede ser un MovieClip, y creo que básicamente tienes que dedicarle tiempo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2009 04:05 pm
Por tiempo no será no te creas. Llevo días con este tema... y en este punto ya no veo como avanzar.
Gracias por tu ayuda.

juan

Por lesta

15 de clabLevel



 

firefox

 

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