Comunidad de diseño web y desarrollo en internet online

Ayuda para reproducir hasta un fotograma determinado

Citar            
MensajeEscrito el 06 Mar 2009 12:28 pm
La situacion es la siguiente: tengo un MC, rotulado "boy"; este clip tiene una linea de tiempo en la que realiza diferentes tipos de movimientos (del fotograma 1 al 10 levanta un brazo, del 10 al 20 levanta el otro, osea queda con los dos brazos arriba). Por otro lado tengo dos botones, que, al situarse sobre ellos el clip debe reaccionar de un modo diferente. Ahora viene el inconveniente, tengo que logar que en ambos casos se reproduzca la animacion hasta su fotograma deseado sin colocar stop en la linea de tiempo, ya que esto impediria el recorrido o regreso de algunas acciones de los botones. Ojala encuentre una solución a mi problemita. Desde ya muchas gracias.

Por davidazcuenaga

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Mar 2009 12:30 pm
Por favor necesito ayuda :? .

Por davidazcuenaga

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Mar 2009 05:37 pm
lo qu eodrias hacer es controlar de manera externa el clip con NetxFrame y detectar con CurrentFrame

Por FeNtO

BOFH

5091 de clabLevel

18 tutoriales

1 ejemplo

  Bastard Operators From Hell

FeNtO DataCenter

firefox
Citar            
MensajeEscrito el 07 Mar 2009 06:55 pm
Creo que con este pequeño prototype lo puedes resolver:

Código ActionScript :

//---Declara este prototype en el primer frame de tu película
MovieClip.prototype.playAndStop = function(frame:Number):Void{
   
   var current:Number = this._currentframe;
   var inc:Number = (frame > current) ? 1 : -1;
   
   this.onEnterFrame = function():Void{
      
      current += inc;
      
      if(current == frame){
         
         delete this.onEnterFrame;
         
      }
      
      this.gotoAndStop(current);
      
   }
   
}


suponiendo que tengas en la escena un MovieClip con nombre de instancia "cuadro" y deseas que se reproduzca la animación que se encuentra en su interior hasta un frame determinado (no importa si es hacia adelante o hacia atras) sólo tienes que llamar al método creado:

Código ActionScript :

cuadro.playAndStop(numero_de_frame);


Saludos

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 07 Mar 2009 11:24 pm
Bien, Muchas gracias. Pero no me quedo claro donde cambiar los parametros para que se detenga la animacion, es decir la especificacion del numero de frame. y otra cosa mas el segundo codigo es para el boton?

Por davidazcuenaga

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Mar 2009 03:12 pm
No debes de cambiar nada... el prototype está hecho para que cuando llames al método "playAndStop" el movieClip reproduzca su animación hasta ese frame y después se detenga.

El segundo código lo puedes poner donde lo desees depende de en qué momento quieres llamar al método "playAndStop", en tu caso (por lo que deseas hacer) lo debes situar dentro de el evento del botón.

Por ejemplo en la escena tienes a tu movieClip "cuadro" y dos movieClips con nombre de instancia "boton1" y "boton2", debes declarar en el primer frame de la película el prototype y después declarar las dos funciones para el evento del rollOver de los botones, algo como esto:

Código ActionScript :

//---Al hacer rollover en el boton1 el movieClip "cuadro" se reproducirá hasta el frame 10
boton1.onRollOver = function():Void{

    cuadro.playAndStop(10);

}

//---Al hacer rollover en el boton2 el movieClip "cuadro" se reproducirá hasta el frame 1
boton2.onRollOver = function():Void{

    cuadro.playAndStop(1);

}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 08 Mar 2009 05:02 pm
Me funcionó a la perfección, te agradezco un montón. Mi problema está resuelto. Nuevamente te agradezco.

Por davidazcuenaga

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2009 09:35 pm
cómo puedo hacer para que reconozca que el MC ya está en ese frame y no necesita moverse? esto sin tener que desactivar botones, desde luego.

Detallo la situación para q se entienda lo q estoy haciendo
>> en level1 tengo el MC "papel" que es una máscara-fondo que varía según la altura de los contenidos (que se cargan level2).
>> en level3 tengo los botones que manejan la MC papel.
>> si el mc papel está en el frame 31 y le doy clic a un botón que también lleva a esa posición, en lugar de quedarse quietito empieza a retroceder hasta el frame 1.

He probado varias cosas pero no logro hacerlo andar bien.

Gracias!

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 May 2009 07:58 pm
Con añadir una simple condición que compruebe que no se encuentre en ese frame lo puedes lograr:

Código ActionScript :

MovieClip.prototype.playAndStop = function(frame:Number):Void  {

   var current:Number = this._currentframe;
   
   if(frame != current){
   
      var inc:Number = (frame > current) ? 1 : -1;
   
      this.onEnterFrame = function():Void  {
   
         current += inc;
   
         if (current == frame) {
   
            delete this.onEnterFrame;
   
         }
   
         this.gotoAndStop(current);
   
      };
   
   }else{
      
      trace("La animación ya se encuentra el el frame " + frame);
      
   }
   
};

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 18 May 2009 02:22 pm
elchininet, gracias por tu respuesta. Vos dirás "qué bruto" y yo te diré "SÍ", pero la verdad es que no entiendo muy bien cómo aplicar esta última observación tuya.

Perdón, mi "AS" es pésimo.

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 May 2009 02:22 pm
elchininet, gracias por tu respuesta. Vos dirás "qué bruto" y yo te diré "SÍ", pero la verdad es que no entiendo muy bien cómo aplicar esta última observación tuya.

Perdón, mi "AS" es pésimo.

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 May 2009 08:57 pm
No tienes que aplicar nada, he cambiado el código del prototype para que no ocurra el problema que describes, sólo cambia el código del prototype por el nuevo.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 19 May 2009 09:59 pm
¿Me creerías si te digo que antes lo había probado y no anduvo?

muchas gracias, ahora anduvo perfecto, genio total

saludos!

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 20 May 2009 12:09 pm
Me alegro que te haya servido. ;)

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 22 May 2009 03:03 pm
Hola, perdón que vuelva sobre lo mismo, pero agregando algunos elementos esto ha dejado de funcionar bien.

Mientras los botones sólo ejecuten la función playAndStop va perfecto. Pero además necesito que carguen swf en otro nivel. Y lo etoy haciendo en el mismo botón:

Código :

on (release) {
   _level1.papel.playAndStop(74);
   loadMovieNum("objetos.swf",3);
   }


Valgan las siguientes aclaraciones:
Los botones están dentro de un MC en nivel 6.
Como puede verse en el cod, el MC al que se aplica la función playAndStop está en el nivel 1, y los contenidos (SWF) cargan en nivel 3.
Estoy trabajando con Flash 8 (AS2, no?)

aquí el link para ver cómo está mal-funcionando: www.omdestudio.com.ar/takkai/

no sé realmente qué es lo que está fallando. Gracias!

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 22 May 2009 11:10 pm
loadMovieNum te dará más problemas de los que te pueda resolver y mucho más si estás llamando a la función dentro de botones que están dentro de clips, utiliza mejor MovieClipLoader, por otro lado no programes encima de los botones, intenta programar en el frame, así te ahorras código y si necesitas cambiar algo no necesitas variarlo en todos los botones.

En realidad no te se decir que falla porque no se lo que quieres hacer con respecto a lo que hay hecho, he mirado la página y cuando presiono los botones me dice nada aún, pero en realidad desconozco donde puede estar el fallo porque no entiendo que deseas hacer.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 26 May 2009 12:17 am
perdón por la demora en agradecer. Estoy probando con movieclipLoader, tratando de entender cómo indicarle la ruta a las funciones. Luego te cuento, gracias!

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 May 2009 07:22 pm
Bueno, removida la orden de loadMovieNum de los botones, la función playandstop anda genial.

Como sugeriste además, ya rearmé los archivos para hacerlos funcionar con MovieClipLoader, pero sucede que ahora los botones no llaman a las movies.
Un dato importante: probé usando un botón en el stage principal y anduvo perfecto. Pero necesito que mis botones estén dentro de un MC y entonces ya no funcionan.

En el primer keyframe de la película pegué el código del ejemplo de MCL, y adapté la función para los botones.

Código :

locales.onRelease = function() {
   nocache = "?nocaching="+random(65000);
   precargador_mcl.loadClip("locales.swf"+nocache,caja_mc);
};


Y así con cada uno. No funcionó, entonces probé indicándole la ruta de donde se encuentra el botón (en un MC con instancia links).

Código :

links.locales.onRelease = function() {
   nocache = "?nocaching="+random(65000);
   precargador_mcl.loadClip("locales.swf"+nocache,caja_mc);
};


Probé tb con la ruta _root y demases pero ninguna va.

Por otra parte, cada botón tiene dada la orden para correr la función playandstop

Código :

on (release) {
   _level1.papel.playAndStop(74);
   }


Ya a esta altura no se me ocurre con qué más probar; me perdí. Si pudieras darme una mano con esto estaría genial, porque estaría resolviendo el funcionamiento de la web.

Gracias de antemano. Saludos.

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 May 2009 07:58 pm
Utiliza esta función, sólo debes indicarle la ruta del swf y el clip donde leer, puedes obviar lo de la precarga.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 26 May 2009 09:14 pm
ok, sé que parece lógico pero... dónde le doy la ruta? al final de la función?

Código :

loader.loadClip(path, mc);


en el botón?

Código :

this.btn_locales.onPress = function():Void{

    _root.genericLoad("locales.swf", _root.caja_mc);

}


te recuerdo la estructura de las cosas:
caja_mc es el contenedor que está en el stage principal
btn_locales está dentro de la MC links, que está en el stage principal.

Probé todo tipo de combinaciones pero no le acierto. Será que no entiendo la lógica de la función !! sorry...

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 May 2009 09:50 am
Si btn_locales está dentro de links no puedes hacer referencia a él como si estuviera en la stage principal, debes indicar la ruta completa:

Código ActionScript :

this.links.btn_locales.onPress = function():Void{

    genericLoad("locales.swf", caja_mc);

}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 27 May 2009 03:43 pm
Bien, ya casi! con esto anduvo mucho mejor.
Sigue teniendo el problema de que, si _level1.papel se encuentra en el frame 74, y doy clic a un btn que va hacia el mismo frame, se descontrola la animación.
Es más claro verlo: http://www.omdestudio.com.ar/takkai/
(todavía hay desprolijidades en las precargas como verás pero quiero resolver esto primero).

las instrucciones para los botones están dadas en un keyframe

Código :

this.links.btn_colecciones.onPress = function():Void  {
genericLoad("colecciones1.swf", caja_mc);
links.gotoAndStop("pv0809");
_level1.papel.playAndStop(74);
};

this.links.colecc1.onPress = function():Void  {
genericLoad("colecciones1.swf", caja_mc);
links.gotoAndStop("pv0809");
};

this.links.colecc2.onPress = function():Void  {
genericLoad("colecciones2.swf", caja_mc);
links.gotoAndStop("oi08");
};

this.links.colecc3.onPress = function():Void  {
genericLoad("colecciones3.swf", caja_mc);
links.gotoAndStop("pv0708");
};

this.links.btn_locales.onPress = function():Void  {
genericLoad("locales.swf", caja_mc);
_level1.papel.playAndStop(74);
};

this.links.btn_accesorios.onPress = function():Void  {
genericLoad("accesorios1.swf", caja_mc);
_level1.papel.playAndStop(74);
links.gotoAndStop("accoi09");
};

this.links.acc1.onPress = function():Void  {
genericLoad("accesorios1.swf", caja_mc);
links.gotoAndStop("accoi09");
};

this.links.acc2.onPress = function():Void  {
genericLoad("accesorios2.swf", caja_mc);
links.gotoAndStop("accpv0809");
};

this.links.acc3.onPress = function():Void  {
genericLoad("accesorios3.swf", caja_mc);
links.gotoAndStop("accoi08");
};

this.links.btn_objetos.onPress = function():Void  {
genericLoad("objetos.swf", caja_mc);
_level1.papel.playAndStop(74);
};

this.links.btn_contacto.onPress = function():Void  {
genericLoad("contacto.swf", caja_mc);
};

this.links.btn_prensa.onPress = function():Void  {
genericLoad("prensa.swf", caja_mc);
_level1.papel.playAndStop(54);
};

this.logo.btn_logo.onPress = function():Void  {
genericLoad("takkai.swf", caja_mc);
};

stop();


imagino que a esta altura te debo tener aburrido, pero de momento no tengo otro modo de aprender. Gracias por tu tiempo

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 28 May 2009 09:21 am
No entiendo el problema que te sucede. Si das click en un botón que hace un playAndStop al frame 70 y mientras se está realizando esta animación das click en otro botón que hace un playAndStop a ese mismo frame te da problemas. O te da problemas aunque la animación se haya acabado y ya se encuentre en el frame 70?.

Y tengo una duda con los botones, no sé como los tienes organizados, cuál es la diferencia entre estos dos botones:

btn_colecciones
colecc1

Los dos hacen lo mismo sólo con la diferencia del playAndStop.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 May 2009 05:51 pm
Hola, creo q no llegó mi respuesta anterior.

Me da problemas aunque la animación se haya acabado y ya se encuentre en el frame 70.

Pero estoy probando del siguiente modo y parece funcionar:
no hay botones con playAndStop al mismo frame, sino que uno va al 74, otro al 75, 76... Y en esos casos la posición del MC papel no varía así que da igual.

Si podés mirá acá cómo funciona así se entiende mejor:
http://www.omdestudio.com.ar/takkai/

creo que está solucionado. De todos modos, si lo querés ver, me interesa tu opinión.

Por la anterior pregunta, la organización de los botones es así:
btn_colecciones llama a colecciones1.swf, a la vez que desplega un submenu con los botones colecc1, 2 y 3...
Cada uno llama a colecciones1.swf, 2.swf, etc...
Pero no necesitan hacer playAndStop porque el fondo ya está en la posición necesaria.

Saludos y Gracias una vez más

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 29 May 2009 07:12 pm
Me alegro que lo hayas solucionado, ya lo he mirado varias veces y en realidad no entiendo nada porque no se como está organizado el proyecto, así que no te preocupes.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 May 2009 07:24 pm
bueno, lo seguiré probando. Cada tanto algún botón hace enloquecer todo, pero bueno... iré viendo.

Mil gracias por todo elchinet

saludos

Por Marcos Murano

16 de clabLevel



Genero:Masculino  

firefox

 

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