¿Quieres registrarte?

Aprende a bailar salsa con ActionScript 3

Por: eldervaz + 11 de Diciembre del 2009

Muchos no sabemos bailar salsa o se nos hace un mundo aprender a mover los pies y cuerpo al ritmo de la música. Es usual en algunos casos pero también hay grandes excepciones. Con este primer curso aprenderás a bailar salsa desde la perspectiva de un desarrollador, obteniendo un algoritmo capaz de cumplir un patrón del paso que realizaremos para luego usarlo con actionScript. En esta ocasión mostraremos el paso básico, el primer paso que debes aprender si quieres bailar salsa lineal. Debo aclarar que no soy un experto en el baile (ver vídeo para corroborar) pero la intención es divertirnos y aprender un poco de código.

No pude hacer este tip sin la necesidad de mostrarles lo que vamos a hacer, así que grabé un vídeo donde explico el paso básico, el patrón base, los subPatrones (C, B, A), para luego continuar con el algoritmo que nos ayude a implementarlo. Por su seguridad, aleje a los niños y personas con alteraciones cardíacas antes de ver el vídeo.








Listo! como habrán 'apreciado' en el vídeo, todo está explicado, es hora de pasarlo a actionScript. Para eso, crearemos un timer que me permita definir la velocidad de los pasos, o lo que llamé el Patrón "C". Para eso implementaré una clase que extienda de Timer y nos permita controlarlo sin depender de la clase principal:

Código :

package com.ini4.salsa.utils
{
   import com.ini4.salsa.events.SalsaEvents;
   
   import flash.events.TimerEvent;
   import flash.utils.Timer;
   
   public final class SalsaTimerControl extends Timer
   {
      
      private var $__delayS:Number;
      
      public function SalsaTimerControl(delay:Number, repeatCount:int=0)
      {
         super(delay, repeatCount);
         this.$__delayS = delay;
         this.addEventListener(TimerEvent.TIMER, onTimer, false, 0, true);
      }
      
      private function onTimer(e:TimerEvent = null):void{
         SalsaEvents.getInstance().step = true;
      }
      
      override public function start() : void{
         super.start();
      }
      
      
   }
}


La clase SalsaTimerControl, nos dará el control de la velocidad o ritmo que usaremos al bailar, la tengo implementada en una clase aparte para poder seguir con las siguientes lecciones o pasos en un futuro.

Ahora, lo que haremos es crear una clase SalsaEvents que nos permita poder disparar los eventos que requiramos, en este caso cuando el timer nos avise el cambio de paso, esta clase nos ayudará también en el resto del curso.

Código :

package com.ini4.salsa.events
{
   import flash.events.Event;
   import flash.events.EventDispatcher;
   
   public class SalsaEvents extends EventDispatcher
   {
      private static var $__instance:SalsaEvents;
      public static const SHOW_STEP:String = "showStep";
      private var $__step:Boolean;
      
      public function SalsaEvents(e:Enforce){      }
      
      public static function getInstance():SalsaEvents{
         if($__instance==null)$__instance = new SalsaEvents(new Enforce());
         return $__instance;
      }
      
      public function set step(b:Boolean):void{
         $__step = b;
         dispatchEvent(new Event(SalsaEvents.SHOW_STEP));
      }
   }
}
class Enforce{}


Cuando la clase SalsaTimerControl dispare un evento TimerEvent.TIMER, este avisará a la propiedad step el update y este, a su vez, disparará SalsaEvents.SHOW_STEP que será escuchado por nuestra clase principal del paso básico.

Al inicio, fue fácil hacer el paso porque me basé en if y usando un contador definía cuando lanzar el paso, muy simple pero efectivo, lo dejé en la clase para los que recién empiezan puedan tener una referencia simple.

Código :

//private static const PASS_TIME:Array = [1,2,3,5,6,7];
//private var cont:int = 0;
...

//if(cont==0)p1.play();
//   if(cont==1 || cont==5)p4.play();
//   if(cont==2 || cont==4)p3.play();
//if(cont==3)p6.play();


Muy bien, defino mis propiedades

Código :

private static const FOOT_RIGHT:String = "footRight";
private static const FOOT_LEFT:String = "footLEFT";
private var timer:SalsaTimerControl;


En mi constructor defino el listener que estará atento a los cambios del timer y el constructor de la clase timer

Código :

SalsaEvents.getInstance().addEventListener(SalsaEvents.SHOW_STEP, foo, false, 0, true);
timer = new SalsaTimerControl(500);
timer.start();


Y cuando el listener sea disparado, ejecutará este método

Código :

//PATRON B
var step:Boolean = (   ((timer.currentCount-1)%3)==0)?true:false;  
 
//PATRON C
var foot:Boolean = (   (((timer.currentCount-1)%2)==0)?true:false);

//PATRON B + PATRON C == PATRON A
//adelante atras
if(((step==true) && (foot== true))) p1.play();
else if(((step==true) && (foot== false))) p6.play();
//centro centro
else if(((step==false) && (foot== false))) p4.play();
else if(((step==false) && (foot== true))) p3.play();
else
   throw new Error("me falta un 3er pie");

campo.text =  (foot)?FOOT_LEFT:FOOT_RIGHT;   


Para el patrón B, lo que hago es obtener el módulo de 3 segun el currentCount esto nos define el pie adelante o atras

eldervaz :

adelante <aquí el módulo es 0
centro
centro
atrás <aquí el módulo es 0
centro
centro


Para el patrón C, es obtener true y false que son los pies moviéndose constantemente

eldervaz :


izquierda
derecha
izquierda
derecha


Y para obtener el patrón A, solo tienes que sumar ambos y comparar... tal como expliqué en el video

Código :

if(((step==true) && (foot== true))) p1.play(); //PIE IZQUIERDO
else if(((step==true) && (foot== false))) p6.play(); //PIE DERECHO
else if(((step==false) && (foot== false))) p4.play();//CENTRO
else if(((step==false) && (foot== true))) p3.play();//CENTRO
else
   throw new Error("me falta un 3er pie");


Y listo, el código completo está aquí

Código :

package com.ini4.salsa
{
   import com.ini4.salsa.events.SalsaEvents;
   import com.ini4.salsa.utils.SalsaTimerControl;
   
   import flash.display.Sprite;
   import flash.events.Event;
   
   public class ClassSalsa extends Sprite
   {   
      //private static const PASS_TIME:Array = [1,2,3,5,6,7];
      //private var cont:int = 0;
      private static const FOOT_RIGHT:String = "footRight";
      private static const FOOT_LEFT:String = "footLEFT";
      private var timer:SalsaTimerControl;
      
      public function ClassSalsa()
      {
         super();
         SalsaEvents.getInstance().addEventListener(SalsaEvents.SHOW_STEP, foo, false, 0, true);
         timer = new SalsaTimerControl(500);
         timer.start();
      }
      
      private function foo(e:Event):void{         
         //PATRON B
         var step:Boolean = (   ((timer.currentCount-1)%3)==0)?true:false;  
          
         //PATRON C
         var foot:Boolean = (   (((timer.currentCount-1)%2)==0)?true:false);

         //PATRON B + PATRON C == PATRON A
         //adelante atras
         if(((step==true) && (foot== true))) p1.play();
         else if(((step==true) && (foot== false))) p6.play();
         //centro centro
         else if(((step==false) && (foot== false))) p4.play();
         else if(((step==false) && (foot== true))) p3.play();
         else
            throw new Error("me falta un 3er pie");
         
         campo.text =  (foot)?FOOT_LEFT:FOOT_RIGHT;   
         
         //vesion anterior simple
         //if(cont==0)p1.play();
         //   if(cont==1 || cont==5)p4.play();
         //   if(cont==2 || cont==4)p3.play();
         //if(cont==3)p6.play();
         //cont++;
         //if(cont>PASS_TIME.length-1)cont = 0;
      }
   }
}


Entonces señores, bailar salsa no es más que una suma de cosas, pero al igual como todo, también tiene una lógica, un patrón y sobre todo... un algoritmo.

Nos vemos en la clase 2.

Enviar a twitter Enviar a facebook

También te interesa


Etiquetas flash matematicas actionscript_3 wtf holyshit

Comentarios | Enviar un comentario
OMFG! jajajajaj XD

Y esto:

Código :

throw new Error("me falta un 3er pie");
es ... (sin palabras) xD
Por: Otaku RzO
Estas muy pinche loco Elder, ahora que estemos por allá te voy a mostrar que Salsa es algo más que algoritmo! xDDD esta cool el experimento viejo
Por: eparada
OMG!! esto es tan fucking sexy!!! (tú sabes q lo digo en serio) =P
Por: oxigeno
Jajaja, muy bueno! :D.
Por: Rafeo
Se acaba de confirmar lo que algunos ya sabíamos, definitivamente estas muy loco Elder!!!! :roll:
Por: davidlopezgamero
Brillante!
Por: JCLS
Jajaja Qué buena manera de aprender a bailar salsa :lol: :lol:

Te quedo muy bien la clase (y)
Por: fredybg
OMFG!! que buen tip, así si aprendo a bailar salsa jajajaja
Por: master_of_puppetz
Hola saludos! excelente explicación te felicito por la iniciativa
Por: Jorge-blog
jaja esta chido
muy buena forma de aplicar AS3
jaja le agregaria esta cancion
http://www.youtube.com/watch?v=nMjqGCaaBwM
Por: skyybluue-blog
Jojojojo
Por: osine
Elder, como muestra del algoritmo "bailarin" está exelente; pero realmente espero ver una mejora en tus pasos en el proximo video XD y si veo mejoras compro la clase en cd interactivo :P
Por: adrian.coria
wuau.....espectacular elder...esto si que es crear arte....
te felicito
Por: bubudrc
le haría falta un try catch por si te caes. XD
Por: Wanaya
Jajajajaja!!! XD Buenísimo!

A mi esto de la salsa no se me da U.U
Por: violetisha

Wanaya-blog :

le haría falta un try catch por si te caes. XD
Jajaja, genial. +1
Por: Freddie
GEEK!
Por: Norke-blog
Muy bien! ese es mi viejo :)
Por: Usagi-blog
OMFG!!! esto es tan genial!!!! XD
Por: Reymond

eldervaz :

Nos vemos en la clase 2.

Lo esperamos con ansia

*1-2-3, 5-6-7, 1-2-3, 5-6-7 :music:
Por: Zguillez
Awwww, Elder bailando xD
jajajajaja
Esto demuestra que los desarrolladores por lo menos intentan bailar xD
Por: daz_angie
En definitiva la ardilla gira en un mundo sin gravedad!!!!!!! So cute!!!!
Por: dannyGeek-blog
JAJAJAJAJA...buenisimo!
Por: Manolito_BCN
WTF??? xD wuajajaja
Por: JaLeRu
Buenisimo Elder!! yo en serio, en serio voy a probar el codigo, si la risa me deja xD
Por: andresmaro
Que padreee eso es amar el trabajo que uno hace que se convierte en diversión y creación, Felicidades, y se puede utilizar de mil formas.
Por: Grakoo-blog
@daz_angie.. hay desarrolladores que si bailan.. u_u
Tengo videos que lo prueban XD XD XD

@eldervaz: Esta cool el experimento... aunque a tu patron de baile le faltan 2 tiempos :P

Es un experimento super... a ver si la siguiente es de como bailar reaggeton... XD XD
Por: Camuss
OH!!! esto podría haber sido útil para _alguien_ hace un tiempo U_U xD
Por: hCanté
jjaja gracias a todos, el paso es el "BASICO 1" de salsa, no le falta tiempo ni nada, yo se lo que les digo @Camuss ;)

Ya empecé con la lógica del paso básico 2 ^^. pronto tendrán noticias
Por: eldervaz
OMG por que no vi esto antes xD yo soy muy tiesa bailando salsa ... esperando básico 2 xD
Por: Jeimmy -blog
jajajajajaja
Por: perros
No sé qué es más épico, toda esta interpretación de los pasos de salsa llevados a la programación o que eldervaz no se riese en todo el video. Si alguien podía hacer algo así, ése eres tú. Muy bueno XD
Por: The Fricky!
eldervaz, me hizo reír muchísimo el comentario "existe gente medio rara". En realidad, si debe existir mucha gente rara en Internet, desde los trolls, hasta los que hacen programas para aprender a bailar salsa con actionscript 3.0 solo por que están aprendiendo a bailar, y quieren convertir el baile en "algo más divertido".

Sobre todo, excelente tu análisis y tu artículo (y), pero queremos que en la proxima entrega bailes como en este video:

http://www.youtube.com/watch?v=d9lCzQ0PPAc :lol::lol::lol::lol:
Por: esutoraiki
Vamos a ver cómo me va. Le diré a mi pareja de baile.. wait wait.. ¿Cómo era? ok.. true, false, true false.. ¿Me sigues? jajaja. Genial eldervaz, a ver si con esto se hace el milagro que un exnovio uber salsero no hizo xD
Por: Tifa^
Juas!. No había visto esto XD. Está excelente, de lo mejor que has hecho este año XD XD.

Ya no tengo excusa para no aprender a bailar salsa XD. Ya no me bailarán, ahora yo los bailaré U_U
Por: XKlibur
ME encantooooooooooooooo no soy programador pero siempre quize encontrarle un patron para aprenderlo mas rapido. demasiado bueno el video
Por: Marcelo-blog
Edel, estas muy fumado amigo! Pero la verdad me encantó la nota!!! Me reí mucho y ahora puedo bailar salsa!!! jajaja! Gracias!
Por: Core-blog
jajajajajajaja...
Por: Zandy
Bueeee....

Pero para la salsa se utilizan los 8 tiempos (En el paso basico) que significa un compas de 4/4. Cuando se baila usualmente el conteo solo se refiere a 1 2 3 - 5 6 7 que es el que tu has usado para tu ejemplo...
Pero obvio.. donde esta el 4 y el 8?
Lo que pasa es que en la salsa.. al bailar se usa el paso 4 y 8 como pausas. Eso permite que el que baile tenga un "contrapeso" ritmico entre el moverse de atras a adelante o de lado a lado o en cualquiera de las variaciones que pueden haber de este "basico" con algunas pausas. De no ser asi se veria super mecanico moviendote sin parar.
Definición Salsa

Bueno... solo era una acotacion mas no una critica. Lo que has hecho me parece cool... :)


Ahora lo que pones del paso basico en 2 me parece woow...
Entender el patron de "On 2" si me parece interesante. Supongo que ahi si usaras para el ejemplo musica de fondo no?

Saludos...
Por: Camuss
jajaj Camuss, volveremos esto una charla técnica sobre la salsa?

Yo estoy explicando la salsa LINEAL!!! no me imagino aun hacerlo con la salsa CUBANA, pero ya se me ocurrirá algo...

Y la salsa líneal la puedes bailar en cualquier planeta, porque siempre son 7 tiempos y la persona que te acompañe, de saber, sabrá cada cambio o movimiento de MANO para poder cambiar de paso.

XD
http://www.youtube.com/watch?v=0gpw4qHFoZY

Bueno yaaaa... déjalo así XD XD XD

Gracias a todos por sus comentarios, al parecer tuvo un impacto interesante para todos y lo mejor es que a todos nos sacó una risa

^^

*se va a planear el paso básico 2 en algoritmo
Por: eldervaz
Buee.. ya te conteste por chat y quedamos en la formular perfecta para ser felices... XD XD XD

Pero por Dios.... "siempre son 7 tiempos" No WAY!!!!!!
Por: Camuss
Muy buen video. Otra nueva forma de aprender a bailar salsa. Esta es la solucion definitiva para aprender a bailar salsa. lo maximo xD xD xD
Por: macpc01
Jaajajaja, nunca pensé ver a mi profe de as3.0 y/o Flex haciendo esto, jajajajaja, larga vida!!!
Por: jcruz
Bueno no se si llegue tarde a este artículo, je me encanto la idea de hecho siempre habia pensado hacer algo así, ya que son ingeniro de sistemas y desarrollador y ademas soy bailarín profesional de danza afrocubana(esto involucra la mal llamada "salsa").

Mis repsetos elder como progrmador y por la iniciativa de llevar el arte a los ambitos de la codificación.

Por otro lado esto sirve para entrar en la mecanica de entender pasos pero siempre es bueno la interelación y el entendimiento de la cultura que es lo que pone el "feeling" al baile es el plus!.

Y camus tengo que decirte que el vinculo que pusiste sobre la "salsa" es el artículo mas desfazado que he leido en mi vida nada mas lejos a lo que puede llamrse salsa muy mal por ese wiki, si quieren saber mas busquen por el casino cubano y lo que tu llamas On2 o mejor los norteamericanos, es realmente bailar en tiempo de son.

Ayyay camus si eres programador solamente no te mentas con mi canción!
Por: vanvanero
esto si que es geek... as3 es tan buen bailarin como la difunta celia...
Por: jegm88
Y para todos los interesados estoy dando clases de rueda de casino en Bogotá, conocido tambien como "salsa cubana", nos puedes encontrar por :
* facebook : http://www.facebook.com/group.php?gid=17343990175

* twitter : http://twitter.com/patakki

* blog : http://www.songoro-cosongo.blogspot.com/

Para que se den cuenta que son puros paradigmas que si uno es programador entonces "uno no puede bailar" en nuestra red de casineros de hecho ya existen bastantes desarrolladores, diseñadores graficos, administradores.... XD XD XD
Por: vanvanero-blog
eso son los efectos cuando fumas mariguana y eres analitico muy buen analicis deverias de hacer uno con las vueltas tengo algo similar bailo salsa avanzado y me e dado cuenta que solo cambiea la forma de los brasos cuando encuentra esl codigo es sencillo este video le acaba de ahorrar mucho trabajo gracias y dios te bendiga
Por: andresvaz@live.com.mx-blo
Juaaaaaaaaaaaaas!!!!!
* Acibjazz se pone de pie y aplaude
Por: Acidbjazz
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.