Comunidad de diseño web y desarrollo en internet online

problemas con swf

Citar            
MensajeEscrito el 24 Sep 2008 08:21 pm
Saludos, tengo un problema, estoy desarrollando un Cd interactivo en flash y dentro de un movieclip, al aplastar un boton se carga un swf con loadmovie, el problema es que cuando cargo otro swf, se carga en el mismo movieclip y el anterior swf se pierde bruscamente, quisiera saber como puedo llamar a varios swf en un mismo movieclip sin que el uno entre y borre al otro.

son varios swf los que tengo que cargar, espero su ayuda, gracias

Por maxcronos

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Sep 2008 08:26 pm
Al cargar el contenido en un MopvieClip, reemplaza al contenido anterior, no los cargues todos en el mismo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Sep 2008 08:38 pm
Buena es la opción, si la consideré, pero lo que pasa es que tengo que cargar alrededor de unos 70 swfs, y no se si es que me ocupe bastante espacio y se me vuelva lento el cd, otra opción que estoy considerando es crear movieclips con actionscript, y utilizar la opción que me das, otra opción que tengo es crear pocos swf y dentro de esos swf trabajar en la linea de tiempo, quisiera saber si es que hay como controlar la linea de tiempo de un swf desde otro swf

Por maxcronos

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Sep 2008 08:43 pm
otra opción que estoy considerando es crear movieclips con actionscript


Correcto, concretamente con createEmptyMovieClip

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Sep 2008 08:55 pm
ya lo probe, me funciona pero quiero que cada swf se carge encima de los otros, estoy utilizando al hacer clic en el boton el siguiente codigo:

on(press){
_root.my_mc.loadMovie("mi_swf.swf",1);
_root.my_mc.swapDepths(getNextHighestDepth());
}

claro esta que los movieclips ya los tengo creados, pero al utilizar swapDepths(getNextHighestDepth()); , se aparece el swf al final de la linea de tiempo, como hago para cargar swf encima de otros

Por maxcronos

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Sep 2008 09:06 pm
swapDepths cambia el stack order y no tiene nada que ver con la posición en la línea de tiempo (sino con la simultaneidad de elementos en un frame), con lo cual no entiendo lo que ocurre

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Sep 2008 10:03 pm
no se yo tampoco lo que ocurre, bueno te explico mejor, tengo lo siguiente:

en la linea de tiempo principal tengo un MC con el nombre de instancia transicion, dentro de este tengo tres MC en el mismo frame, uno con el nombre de instancia hojas_mc, otro con el nombre tran_mc y otro con el nombre tran1_mc, a estos si los puedo llevar al frente cada vez que quiero sin problema....

dentro de hojas_mc, creé movieclips con createEmptyMovieClip que tiene los nombres de h1, h2. h3, etc en los niveles de profundidad 1,2,3.. respectivamente

dentro de hojas_mc, esta la siguiente programación en el primer frame:

this.createEmptyMovieClip("h1", 1);
this.createEmptyMovieClip("h2", 2);
this.createEmptyMovieClip("h3", 3);

en la linea de tiempo tengo botones, en uno de ellos tengo esta programacion:

on(press){
_root.transicion.hojas_mc.swapDepths(getNextHighestDepth());
_root.transicion.hojas_mc.loadMovie("atacames.swf", _root.transicion.hojas_mc.h2);
}

hasta ahí todo bien, el swf si se me carga al frente, pero tengo otros botones con los cuales también se navega y en uno de estos, tengo la programación:

on(press){
_root.transicion.hojas_mc.loadMovie("sanlorenzo.swf", _root.transicion.hojas_mc.h1);
}

se me carga el swf pero se elimina directamente el anterior swf, no se si tiene algún error la programación...

Por maxcronos

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 10:44 am
Cuando haces un loadMovie, puedes poner el lugar donde lo cargas adelante o como segundo argumento:

holder.loadMovie("algun.swf")

o

loadMovie("algun.swf", holder)

Si pones al principio donde cargas, ignora el segundo (gracias AS3 por evitarnos estos errores) Es decir, básicamente lo estás cargando en el mismo contenedor:

_root.transicion.hojas_mc.loadMovie("atacames.swf", _root.transicion.hojas_mc.h2);
_root.transicion.hojas_mc.loadMovie("sanlorenzo.swf", _root.transicion.hojas_mc.h1);

Si quieres que cargue en hojas, haz

_root.transicion.hojas_mc.h2.loadMovie("atacames.swf")
_root.transicion.hojas_mc.h1.loadMovie("sanlorenzo.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 25 Sep 2008 03:24 pm
Gracias si se me cargan, pero sigo teniendo el problema de que no se me cargan uno encima de otro,

siguiendo con lo anterior he creado varios mc dentro del mc transición:

this.createEmptyMovieClip("tran_mc", 1);
this.createEmptyMovieClip("tran1_mc", 2);
this.createEmptyMovieClip("h1",3);
this.createEmptyMovieClip("h2",4);
this.createEmptyMovieClip("h3",5);

a los dos primeros les cargo al hacer clic en botones con la siguiente programación:

boton1:

on(press){
_root.transicion.tran_mc.swapDepths(getNextHighestDepth());
_root.transicion.tran_mc.attachMovie("tran","tran",1);
}

y

boton2:

on(press){
_root.transicion.tran1_mc.swapDepths(getNextHighestDepth());
_root.transicion.tran1_mc.attachMovie("tran1","tran1",1);
}

a los demas mc les cargo swf con la programacion:

boton3:

on(press){
_root.transicion.h2.swapDepths(getNextHighestDepth());
_root.transicion.h2.loadMovie("atacames.swf");
}

pero tengo problemas, al hacer clic en boton1 me aparece bien pero al hacer clic en los demás botones no me aparece lo que debe, y hay problemas, los swf tienen una animación de inicio que dura unos 30 frames, como puedo hacer para que al hacer clic en cada botón, lo que cargue ese botón aparezca al frente?

Por maxcronos

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 03:37 pm
Hay dos niveles de fallo: uno de principios y otro de contexto (que estoy en un 90% seguro que es tu caso)
Para asegurarte el primero (es decir, que swapDepths funcione) usas simplemente cuadraditos y cambias su nivel.
Luego que compruebas que el principio funciona (y que es todo lo que te puedo decir) te metes en la estructura de tu propia peli.
Un ejercicio que en general recomiendo es: si para describir lo que ocurre te la pasas diciendo: "si esta intro llega aquí pasa esto, pero si le doy a este boton pasa esto otro, aunque si vas a esta sección pasa aquello", entonces tu peli está hecha mas bien como una animación compleja y es bastante complicado hacer un mecanismo eficiento .... mas bien tienes que ir por el lado de la animación, toda programación será arbitraria y compleja (y solo corregible analizando tu fuente)
Ahora si puedes describir claramente un mecanismo, entonces es posible encontrar respuestas eficientes. Por ejemplo aquí describo un mecanismo:

- Tengo 10 secciones (swf) que se cargan externamente, con los nombres de cada una de las pelis en un array
- Tengo 10 botones (btn1 a btn10) que cargan la peli desde el array en contenedores distintos creados al vuelo
- Una vez cargada la peli en el contenedor, hago un swapDepth y lo hago visible (invisible mientras 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 25 Sep 2008 04:17 pm
Bueno la verdad es que soy un poco novato en lo que se refiere a programación hay muchas cosas que todavía no comprendo bien...

Lo he probado con cuadritos como me dijiste y no funciona, entonces el mecanismo seria este ( espero sea comprensible):

Tengo 2 secciones(swf) que se cargan externamente con sus respectivos nombres

Tengo un MC en la linea de tiempo con su respectivo nombre de instancia, el mismo que contiene dos MC creados con Actionscript con sus respectivos nombres y niveles de profundidad

Tengo dos botones en la linea de tiempo que cargan las secciones en los MC creados con Actionscript

la pregunta es esta, ¿como hacer o que programación debería utilizar para que las secciones aparezcan siempre encima de la anterior cargada?

Por maxcronos

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 05:05 pm
Lo he probado con cuadritos como me dijiste y no funciona


Bueno, ese es un buen principio. Copia y pega este code en el primer fotograma de una peli vacía (lo hago todo con code par que sea fácil de reproducir)

Código ActionScript :

colores = [0xff0000, 0x00ff00, 0x0000ff, 0xCCFFEE, 0xEC9EC9]
for(var i=0; i<colores.length; i++){
  drawSquare(colores[i])
}
function drawSquare(col){
   var d:Number = this.getNextHighestDepth()
   var t:MovieClip = this.createEmptyMovieClip("t"+d, d)
   square(100, 100, t, col)
   t._x = 100 + (d*2)
   t._y = 100 + (d*2)      
   drawBut(t)
}
function drawBut(who){
   var d:Number = this.getNextHighestDepth()
   var t:MovieClip = this.createEmptyMovieClip("b"+d, d)
   square(50, 20, t, 0x00ff00)
   t.createTextField("muestra", 1, 3, 3, 40, 20)
   t.muestra.text = t._name
   t._x = (d * 30) 
   t._y = 300
   t.onPress = function(){
     who.swapDepths(this._parent.getNextHighestDepth())
   }
}
function square(w, h, who, col){   
     who.lineStyle(1)
     who.beginFill(col, 100)
      who.lineTo(w, 0)
      who.lineTo(w, h)
      who.lineTo(0, h)
      who.lineTo(0, 0)      
      who.endFill()
}


Si le vas dando a los botoncitos verdes, los cuadrados a los que aluden vienen al frente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Sep 2008 05:58 pm
Como te dije soy un poco novato en lo de programación, y creo que soy bien novato, el código que enviaste lo comprendí mas o menos, gracias de todas formas, el problema que tenia ya lo solucione, no se si sea la forma mas conveniente o la ideal pero ya logre hacer que cada mc me aparezca encima de los demás, dentro del MC de la linea de tiempo existe otro mc, a este lo duplique n veces y les dí sus respectivos nombres de instancia, y al hacer clic en el botón me funciona bien la programación swapDepths(getNextHighestDepth())... claro que hay bastantes mc, pero funciona...

Pero surge otro problema como son bastantes secciones (swf), los que tengo que cargar (esto lo hice por tiempo ya que me resulta mas fácil cambiar datos y reemplazar imágenes), no lo he probado aun pero estoy seguro de que se me hará más lento el cd...

tengo secciones(swf) que se cargan dentro de mc y aparecen una encima de la otra

Como hago para que al momento de que se termine de cargar una sección(swf), elimine a la anterior

y otra pregunta como se controla la linea de tiempo de un swf cargado desde el swf madre

Por maxcronos

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 06:02 pm
Para que un contenido reemplace a otro, lo cargas en el mismo contenedor
Para manejar una línea de tiempo de un contenido cargado en el clip holder, haces

holder.gotoAndStop(5)

Aunque para hacer esto tienens que espñerar que termine de cargar el contenido en holder

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Sep 2008 08:10 pm
Muchas gracias por tu ayuda, seguiré trabajando y si tengo mas dudas las escribiré para que me colaboren

Por maxcronos

18 de clabLevel



 

firefox

 

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