coge la información y corre

Reproductor mp3 flash ultraligero

29 de Octubre del 2008 Escrito por Alex Barros

Hoy voy a hacer un post ligerito. Ligerito como el reproductor flash de mp3 niftyPlayer.

Simplemente se trata de un reproductor de mp3, hecho con la tecnología flash, listo para integrarse en una web. Además podemos interactuar con él de forma muy sencilla via JavaScript.

Cómo usarlo

Una vez hayamos descargado los archivos necesarios, sólo hay que insertar este código en nuestro documento web:

  1. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="165" height="38" id="niftyPlayer1" align="">
  2.   <param name=movie value="niftyplayer.swf?file=betty.mp3&as=1">
  3.   <param name=quality value=high>
  4.   <param name=bgcolor value=#FFFFFF>
  5.   <embed src="niftyplayer.swf?file=betty.mp3&as=1" quality=high bgcolor=#FFFFFF width="165" height="38" name="niftyPlayer1" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
  6.   </embed>
  7. </object>

Lo único que tenemos que editar es, en la segunda fila, las variables GET file y as. “file” es el nombre del archivo .mp3, y as valdrá 1 si queremos que empiece a reproducir automáticamente, o 0 (cero) de lo contrario.

Interacción JavaScript

Es realmente sencillo. Lo primero de todo es incluir en la cabecera del documento HTML esta línea:

  1. <script type="text/javascript" language="javascript" src="niftyplayer.js"></script>

Los métodos de que disponemos son los siguientes:

Play Toggle

Si el reproductor estaba en play, pasa a pause, y viceversa

  1. niftyplayer(‘niftyPlayer1′).playToggle()

O también Play y Pause por separado

  1. niftyplayer(‘niftyPlayer1′).play()
  1. niftyplayer(‘niftyPlayer1′).pause()

Stop

Detiene la canción y se va al principio

  1. niftyplayer(‘niftyPlayer1′).stop()

Cargar nuevo archivo mp3

  1. niftyplayer(‘niftyPlayer1′).load(‘nombre_archivo.mp3′)

Si queremos cargar, y a continuación empezar a reproducirlo:

  1. niftyplayer(‘niftyPlayer1′).loadAndPlay(‘nombre_archivo.mp3′)

Asociar eventos del reproductor

Por ejemplo, asociamos una función nuestra al evento de comenzar la reproduccion (play)

  1. niftyplayer(‘niftyPlayer1′).registerEvent(‘onPlay’, ‘alert(\’Has pulsado play!\’)’)

También contamos con los eventos onPause y onStop

Obtener estado del reproductor

Devolverá un texto de entre “playing“, “stopped” y “paused“, dependiendo del estado del reproductor

  1. alert(niftyplayer(‘niftyPlayer1′).getState())

Y eso es todo! Fácil, verdad? Qué te parece esta aplicación? La usarás? Para qué?
Te espero en los comentarios, ahí siempre hace buen clima n_n

Categorias: Aplicaciones, Boozox, JavaScript | 2 comentarios »

La locura del JavaScript: Eventos de teclado

13 de Noviembre del 2007 Escrito por Alex Barros

Trabajar en JavaScript ha tenido siempre una gran dificultad, y es que se trata de un lenguaje no estándar, interpretado por el cliente. Esto provoca desigualdades en los resultados, dependiendo sobretodo de los distintos navegadores, y sus respectivas versiones.

En el caso de los eventos de teclado este desmadre tiene un especial énfasis, y viene a demostrarse en este documento (en inglés) que paso a resumiros.

Eventos keyup keydown y keypress

Estos eventos son disparados en momentos distintos, dependiendo del navegador. Por ejemplo el mantener pulsada la tecla “Alt”, o el pulsar un caracter durante varios segundos, producen resultados distintos en cuanto al disparo de eventos, en cada navegador.

Interpretación de la tecla pulsada

Llegados al punto de que el usuario ha pulsado una tecla, querremos saber cuál de ellas ha pulsado. Pues el resultado también difiere entre navegadores (como era de esperar).

Para complicarnos la vida a los programadores, la codificación es distinta entre los principales navegadores. Aúnque en los caracteres normales (numeros y letras) hay una cierta uniformidad, la diferenciación del lugar donde se pulsan los números (hay dos series de números en un teclado normal), y la mayoría de los signos, adquieren claves distintas que los identifican.

Echa un vistazo a la tabla de códigos más abajo.

Tablas clarificadoras

Navegador Eventos enviados cuando se pulsan teclas modificadoras (Alt, Ctrl, etc)
Gecko
Internet Explorer
keydown
keyup
Opera
Konqueror
keydown
keypress
keyup
Safari
iCab
ningún evento
Navegador Eventos lanzados en cada autorepetición
Gecko (Linux)
Gecko (Macintosh)
Safari (Macintosh)
Konqueror
Opera
sólo keypress
Internet Explorer
Gecko (Windows)
Safari (Windows)
keydown
keypress
iCab keyup
keydown
keypress
Tecla Mozilla Internet Explorer Opera códigos pseudo ASCII
Teclas alfabéticas Código ASCII de la letra en mayúscula
[ Espacio ] 32 32 32 32
[ Enter ] 13 13 13 13
[ Tabulador ] 9 9 9 9
[ Retroceder ] 8 8 8 8
[ Shift ] 16 16 16 16
[ Control ] 17 17 17 17
[ Alt ] 18 18 18 18
izquierda 37 37 37 37
arriba 38 38 38 38
derecha 39 39 39 39
abajo 40 40 40 40
Números en el teclado Código ASCII del número (48 más el número), aúnque esté pulsado un modificador Código ASCII del caracter que será enviado.
[ ; : ] 59 186 59 59 (unshifted) o 58 (shifted)
[ = + ] 61 187 61 61 (unshifted) o 43 (shifted)
[ , < ] 188 188 44 44 (unshifted) o 60 (shifted)
[ - _ ] 109 189 45 45 (unshifted) o 95 (shifted)
[ . > ] 190 190 46 46 (unshifted) o 62 (shifted)
[ / ? ] 191 191 47 47 (unshifted) o 63 (shifted)
[ ` ~ ] 192 192 126 126 (unshifted) o 96 (shifted)
[ \ | ] 220 220 92 92 (unshifted) o 124 (shifted)
[ ' " ] 222 222 39 39 (unshifted) o 34 (shifted)
Números (teclado separado) 96 más número 48 más número (ASCII)

Recomiendo leer la fuente original (inglés).

Categorias: Código, JavaScript, Web | 8 comentarios »

Carga asíncrona de archivos JavaScript

16 de Octubre del 2007 Escrito por Alex Barros

Me gustaría recalcar esta técnica, ya que según mi opinión no está valorada lo suficiente.

Se trata de la carga asíncrona de archivos Javascript, es decir, no cargar un archivo JavaScript hasta que lo necesite.

¿Cómo hago esto?

Es muy sencillo, una simple función puede facilitarte increíblemente el trabajo. Es la siguiente:

  1. function include(path){
  2.         var j = document.createElement("script");
  3.         j.type = "text/javascript";
  4.         j.src = path;
  5.         document.body.appendChild(j);
  6. }

Como puede apreciarse, la función crea “al vuelo” un elemento tipo script, y lo introduce en el cuerpo del documento. De esta forma no tenemos que cargar muchas librerías, o grandes archivos, hasta que no los necesitemos.

  1. if(programa == ‘test’) {
  2.         include(‘test.js’);
  3. } else {
  4.         include(‘default.js’);
  5. }

Es posible que incluso con el evento onLoad tengamos el control del instante en que se ha cargado, pero esto se atiene más a compatibilidades entre navegadores.

Este tema lo he rescatado, porque la versión 2.1 de Imaset va a tener una fuerte carga de Javascript, lo que hará que el manejo sea más rápido y llevadero, y evitará envíos AJAX innecesarios. Pero para esto debo cargar el gran fichero JS, únicamente cuando se solicite usar el plugin. De ahí su gran potencial.

Categorias: Código, JavaScript | 2 comentarios »

Comet, la nueva etapa de Ajax

30 de Agosto del 2007 Escrito por Alex Barros

generic-comet.jpgAjax sigue siendo un completo desconocido para muchos programadores web. Se habla de que es un lenguaje (no lo es, es una herramienta!) y se asocia automáticamente a la nueva generación de webs, más potentes, amigables, sociales, usables…

Ajax consiste, básicamente, en mandar mensajes (con formato XML, o texto plano) del servidor al cliente mediante una petición asíncrona por parte del cliente.

Un ejemplo: Cuando el usuario pulsa en un botón de búsqueda, se envía una petición al servidor solicitando los resultados de esta búsqueda, cuando los tiene los devuelve, y el usuario los ve en pantalla, todo sin cambiar de página.

Esto implica que para que el servidor me de información, el cliente tiene que solicitarla, es decir, al ocurrir algún evento en el lado cliente. Y aquí radica la diferencia entre AJAX y Comet (o HTTP Push), y es que Comet no requiere que el ordenador cliente solicite ninguna información, sinó que es el servidor el que decide cuándo enviar la información al cliente, de forma asíncrona.

Un ejemplo: En un sistema de mensajería instantánea, en lugar de hacer contínuos chequeos al servidor, para ver si hay nuevos mensajes, símplemente cada vez que el servidor recibe un nuevo mensaje envía esta información a las máquinas cliente.

La forma de hacer esto es mediante una conexión HTTP de larga duración, de esta forma el servidor tiene una línea contínua de comunicación con el cliente. Aquí el cliente envía información al servidor, y el servidor al cliente; pero cada uno lo hace en el momento oportuno, en lugar de viajar la información como bloque de datos en respuesta a una petición.

Para usar esta tecnología tendremos que usar alguno de los pocos frameworks que actualmente existen con soporte para Comet, por ejemplo Xaja, un framework PHP que permite este tipo de conexión, o HTTP.Push, pequeña biblioteca javascript con este tipo de llamada.

Personalmente todabía he de investigar sobre esta tecnología, porque no tengo muy claro lo de generar eventos en el servidor, o lo de que un archivo en lado servidor esté siempre disponible con el cliente.

Categorias: HTML, JavaScript, Web | No hay comentarios »

del.icio.us meneame.net RSS

Buscar:

Gpsia Descubre y comparte rutas por todo el mundo, tomadas con GPS. Ver más Imaset Edita tus imágenes de Wordpress con este sencillo plugin. Ver más

¡Mi música es tuya!

Digo yo que...

Mis fotos de Flickr

Entradas Recientes

Meta:

Respeta el copyleft

,