A pedido del público (mentira, lo queria compartir :P), el código del Fernet Volador explicado:
Antes que nada, si no lo viste en funcionamiento, abri tu consola y pone konamiFernetJS.run(), para terminarlo ingresa konamiFernetJS.stop(). Todo nace desde este post de Matias
El objetivo del fernet volador es basicamente lo que se vé, una botella de fernet con una capita y que pudieramos volar por la pantalla.
Un poco de como armarlo
Primero nuestra imagen de la botella, hacemos los movimientos de la capa en la misma imagen, la cual va a estar cambiando continuamente (el background-position en CSS) dando el efecto de que se mueve la capa:
Vamos a tener que mover la botella en angulos dependiendo de hacia donde este yendo, por lo que usamos CSS3 y el copado rotate, pero también vamos a tener que mover la posición de la botella en la pantalla para simular el movimiento, asi que armamos 2 divs, uno con la imagen del fernet (en posición absoluta), en el cual vamos a ir modificando el rotate (verde) y otro que contiene a este con posicion absoluta al documento (rojo), al cual le vamos a cambiar el top y left para ir posicionandolo.
Y todo esto va a depender de las flechas presionadas, asi que diría de mantenerlas en un array para que el loop se encargue de verificar cual está y aplicar los CSS.
Estructurando el codigo
Vamos a estructurar nuestro código armando una función para iniciar, 2 funciones para cuando presiona una flecha en el teclado y cuando la suelta, una función para mover la botella (la que va a estar en un loop) y por último una función para limpiar el dom cuando termina.
Principalmente el fernet volador tiene 2 entradas públicas, una para iniciar y otra para terminar, asi que vamos a dejar solo eso público utilizando lo que vimos en este post
Arranquemos por el objeto konamiFernetJS:
De esta manera dejamos toda funcionalidad, variables, etc. dentro de una sola variable global konamiFernetJS.
iniciando: runKonami()
En esta funcion vamos a crear el dom, eventos e iniciar los loops de animacion:
eventos keyup y keydown
Manejando el array keys dependiendo de que esta presionado y que se dejó de presionar
loop de movimiento de la botella: moveBottle()
Limpiamos memoria cuando se detenga: reset()
Y eso es todo el fernet volador (sacando el css), estoy seguro que cambiarias varias cosas (con escribir el post yo cambiaría algunas :P) por eso te dejo un repo en github para que tengas todo el ejemplo completo y puedas modificarlo o reutilizarlo.