Comunidad de diseño web y desarrollo en internet online

Play Pausa animacion

Citar            
MensajeEscrito el 01 Ago 2007 01:08 am
Hola a todos
Esto es de un tema que puse hace tiempo, no queria habrir un hilo nuevo pero no lo encuentro. La cuestión es que tengo una animación con multiples mc, queria poner un play pausa que los parara y reanimara (como el play pausa de una pelicula) Con ayuda en otros foros hemos conseguido pausarlo, pero a la hora de retomar el movimiento dando a play, no continua en el lugar donde se detuvo, si no que saltan aleatoriamente. El codigo es:

Creamos un array:

Código :

var arrayMovies:Array = new Array();


Definimos funciones:

Código :

function stopMovies(arrayM:Array):Void{ 
        for (m in arrayM) arrayM[m].stop(); 
} 
function playMovies(arrayM:Array):Void{ 
        for (m in arrayM) arrayM[m].play(); 
}


Agregamos moviclips:

Código :

_root.arrayMovies.push(this);


(gracias a http://www.subflash.com por la ayuda)

Tiene solución??
MUCHAS GRACIAS

Por eldavi

60 de clabLevel



 

opera
Citar            
MensajeEscrito el 01 Ago 2007 01:36 am
hola que tal eldavi!! se me ocurre que quizas en otra cadena puedas almacenar el fotograma donde se quedaron los mc, puedes usar _currentframe para obtenerlo

saludos!!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 01 Ago 2007 11:08 am
Muchas gracias andres (de nuevo) Me he estado informando sobre _currentframe, deberia guardar el frame en el que se pausaron todos los mc, esto lo tengo que hacer con un array de nuevo?? La verdad es que estoy un poco perdido, agradeceria que me he hecahras un pequeño cable mas.
MUCHAS GRACIAS

Por eldavi

60 de clabLevel



 

opera
Citar            
MensajeEscrito el 01 Ago 2007 01:41 pm
hola que tal eldavi!! si mira _currentframe cuya sytaxis correcta es:

Código :

un_mc._currentframe


nos permite conocer el fotograma en el que la cabeza lectora del reproductor se encuentra en ese momento, bueno en mi opinion si creo que deberias de alojar el ultimo fotograma, pues el problema que se presenta es que cargan aleatoriamente en un fotograma distinto de donde se quedo, se me ocurre algo asi:

Código :

function stopMovies(arrayM:Array):Void{ 
        for (m in arrayM)
arrayM[m].stop(); 
tracking.psuh(arrayM[m]._currentframe)
} 
function playMovies(arrayM:Array):Void{ 
        for (m in arrayM) arrayM[m].play();
arrayM[m].gotoAndPlay(tracking[aqui_numero_de_indice])
}


saludos!!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 01 Ago 2007 04:27 pm
Muchas gracias andres, increile pero lo he entendido, aunque para variar otra duda....no se que debo poner en:

Código :

arrayM[m].gotoAndPlay(tracking[aqui_numero_de_indice])


en [aqui_numero_de_indice]

:oops:

Por eldavi

60 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ago 2007 03:08 pm
prueba con esto:

function stopMovies(arrayM:Array):Void{
for (m in arrayM) {
arrayM[m].Foto = arrayM[m]._currentframe;
arrayM[m].stop();
}
}
function playMovies(arrayM:Array):Void{
for (m in arrayM) {
arrayM[m].gotoAndPlay(arrayM[m].Foto);
}
}

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 02 Ago 2007 03:35 pm
Muchas gracias, pero tengo k cambiar algo??? es que asi como lo pones no me va :-(

Por eldavi

60 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ago 2007 04:12 pm
que raro, tienes animaciones hechas con actionscript?

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 02 Ago 2007 04:46 pm
Prueba inicializando la variable Foto que te propuso gabynufe (Foto) a cero en todas las peliculas y asi conseguirás que al ejecutar la función que pone en funcionamiento (valga la redundancia) todas las películas a la vez, la var Foto exista realmente.
esto deberias hacerlo en:

Código :

_root.arrayMovies.push(this); 



//Por favor que alguien corrija lo siguiente si me equivoco.
Creo que lo deberias hacer asi:

Código :

_root.arrayMovies.push(this);
this.Foto = 0;
 

A ver si hay suerte y te sirve de algo ^^ .

Por mussra

100 de clabLevel

1 tutorial

 

firefox
Citar            
MensajeEscrito el 02 Ago 2007 05:26 pm
Nada tampoco funciona.
No estoy haciendo ninguna animacion con actionscript
Espero no estar colocandolo mal, pero he provado a revisarlo bien y nada....

Por eldavi

60 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ago 2007 05:47 pm
hola que tal eldavi!!!

Código :

function stopMovies(arrayM:Array):Void{ 
        for (m in arrayM)
arrayM[m].stop(); 
tracking.push(arrayM[m]._currentframe)
} 
function playMovies(arrayM:Array):Void{ 
        for (m in arrayM) arrayM[m].play();
arrayM[m].gotoAndPlay(tracking[aqui_numero_de_indice])
}


en numero de indice va el indice que ocupa en la cadena por ejemplo si estan en orden el primer MC ocupa el indice 0 osea:

Código :

arrayM[m].gotoAndPlay(tracking[0]);


aunque quizas necesitas automatizarlo un poco dinamicamente haces algo asi

Código :

for(a in tracking){
arrayM[m].gotoAndPlay(tracking[Number(a)]);
}


si claro que puedes usar un for(i=0;i<......
pero me gusta evitar código de mas

saludos!!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ago 2007 09:14 pm
Tampoco...desesperaaaante. Asi no me va:

Código :

var arrayMovies:Array = new Array();


Código :

function stopMovies(arrayM:Array):Void{ 
        for (m in arrayM)
arrayM[m].stop(); 
tracking.push(arrayM[m]._currentframe)
} 
function playMovies(arrayM:Array):Void{ 
        for (m in arrayM) arrayM[m].play();
for(a in tracking){
arrayM[m].gotoAndPlay(tracking[Number(a)]);
}}


Y en cada mc en un frame vacio:

Código :

_root.arrayMovies.push(this);


Desesperacion total....

Por eldavi

60 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ago 2007 09:22 pm
hola eldavi!!

Código :

for(a=0;a<tracking.length;a++){
this[arrayM[m]].gotoAndPlay(tracking[a]);
}}


si checas bien puse this o el nivel en el que estas trabajando claro que puede ser algun MC por ejemplo

Código :

un_mc.otro_mc[arrayM[m]].gotoAndPlay(tracking[a]);


espero te ayude,saludos!!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ago 2007 09:59 pm
Vaya, creo que me estoy liando cada vez mas. Lo ultimo que me has puesto tiene que ir asi??:

Primer fotograma, linea principal, nivel 0:

Código :

var arrayMovies:Array = new Array();

function stopMovies(arrayM:Array):Void{ 
        for (m in arrayM)
arrayM[m].stop(); 
tracking.push(arrayM[m]._currentframe)
} 
function playMovies(arrayM:Array):Void{ 
        for (m in arrayM) arrayM[m].play();
for(a=0;a<tracking.length;a++){
this[arrayM[m]].gotoAndPlay(tracking[a]);
}}


Y en cada mc en un frame vacio:

Código :

_root.arrayMovies.push(this);

Por eldavi

60 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ago 2007 10:46 pm
hola eldavi haa prdn no vi la m, tienes un condicional sencillo antes talvez y talvez no se la vdd esto funcione

var arrayMovies:Array = new Array();

function stopMovies(arrayM:Array):Void{
for (m in arrayM){
arrayM[m].stop();
tracking.push(arrayM[m]._currentframe)
}
}
function playMovies(arrayM:Array):Void{
var indice:Number=0;
for (m in arrayM){
arrayM[m].play();
this[arrayM[m]].gotoAndPlay(tracking[indice]);
indice++
}
}

solo falta que lo pruebes pero talvez por ahi va...

saludos!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 02 Ago 2007 10:55 pm
:( :( :(
Con ese codigo y en cada mc:

Código :

_root.arrayMovies.push(this);


Tampoco va....

Por eldavi

60 de clabLevel



 

opera
Citar            
MensajeEscrito el 03 Ago 2007 02:13 pm
mandame tu fla para revisarlo, se me hace muy raro que no te funcione.

gabynufe @ yahoo.com.mx

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 03 Ago 2007 03:34 pm
Como al final con tantas soluciones posibles lo unico que consguimos es aumentar el problema, he hecho una simple animacion que creo que es lo que buscas.


Son basicamente 3 mc independientes a los que les he puesto las acciones

Código :

onClipEvent(Load){
   _global.pelis.push(this);
}

la variable _global.pelis es la matriz que contiene las peliculas y la cree en un fotograma llamado AS asi

Código :

_global.pelis = new Array();


y luego a los botones play y pause les puse el codigo siguiente respectivamente

Código :

on(press){
   for(a in _global.pelis){
     _global.pelis[a].play();
   }
}



Código :

on(press){
   for(a in _global.pelis){
     _global.pelis[a].stop();
   }
}



aqui os dejo temporalmente el fla

Por mussra

100 de clabLevel

1 tutorial

 

firefox
Citar            
MensajeEscrito el 04 Ago 2007 01:50 pm
Al final lo he conseguido integrar en la animcion, no exactamente como me ubiera gustado ya que no consigo parar todo pero funciona muy bien. Muchas gracias a todos por haberme ayudado
Saludos :wink:

Por eldavi

60 de clabLevel



 

opera

 

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