Unidad 18. Ejemplos ActionScript (II)


Ejemplos de manejo de Sonidos con ActionScript

 

Aunque la idea de objeto no suele llevarnos a pensar en un sonido, en Flash MX 2004 los sonidos también son objetos y podemos manejarlos usando adecuadamente ActionScript. Veamos unos cuántos códigos muy comunes y un completo ejemplo de cómo usarlos:

/* Código 1 */

musica = new Sound();
   musica.loadSound("sonido.mp3",false);

Estas 2 líneas cargan un sonido y le dan nombre.

La primera línea le dice a Flash que vamos a crear un nuevo objeto de tipo Sonido y que se va a llamar "musica".

La segunda línea carga un sonido de nuestro disco duro llamado "sonido.mp3" y lo carga dentro del objeto musica. El segundo parámetro "false" indica que es un sonido de "evento", y que, por tanto, se cargará completamente antes de comenzar a reproducirse.

 

/* Código 2 */

musica.stop();

Este código detiene el sonido "musica" al instante.

 

/* Código 3 */

musica.stop();

musica.start(0,99);

La primera línea como ya hemos visto, detiene el sonido "musica".

La segunda línea provoca que el sonido "musica" comience a reproducirse (start) a partir de su posición inicial (el 0 indica los segundos transcurridos desde el comienzo) y lo haga 99 veces. (esto se llama loop o bucle)

 

/* Código 4 */

musica.stop();

musica.start(0,0);

Este código detiene el sonido "musica" y a continuación lo reinicia, reproduciéndolo sólo 1 vez.

Ahora que ya sabemos controlar los sonidos mediante ActionScript, veamos un ejemplo que reune todo lo visto anteriormente.

En este ejemplo:

- Tenemos un único fotograma con 3 botones. En este fotograma tenemos insertado el Código 1.

- Los 3 botones tienen distintas funcionalidades:

- En el botón rojo, está insertado el Código 2

- En el botón azul, está insertado el Código 3

- En el botón verde, está insertado el Código 4

Ejemplos de ActionScript en objetos abstractos. El objeto MATH

 

Como ya sabemos, los objetos no visibles también se controlan con ActionScript. Vamos a ver algunos ejemplos del funcionamiento del objeto Math y como sacarle partido.

x = Math.random();

El Método "random" del objeto Math genera un número aleatorio entre 0 y 1. En este caso, el resultado lo almacenamos en la variable x, para poder usarlo después...

Las utilidades de este métodos son muchas, generar claves secretas, passwords, números de loteria etc...

 

x = Math.round(4,3);

El Método "round" REDONDEA el parámetro introducido eliminando la parte decimal del mismo.

En el ejemplo, x pasaría a valer 4.

 

x = Math.max(5 , 2);

El Método "max" obtiene el valor máximo entre 2 números.

En el ejemplo, x pasaría a valer 5.

 

El objeto Math es muy útil y nos ahorra mucho trabajo, pues hay multitud de operaciones que responden a alguno de sus métodos y no tenemos porqué implementar. Basta buscarlos en el manual y usarlos.

 

Creación de un cargador o preloader

 

  Vamos a analizar el código de un cargador o preloader para acabar de afianzar nuestros conocimientos de ActionScript:

Los cargadores o preloaders sólo son necesarios cuando las películas adquieren un tamaño considerable y resulta inviable visionar la película sin tenerla toda cargada (porque se atasca, aparecen partes incompletas etc...). Vamos a suponer pues, que tenemos una película con 150 fotogramas. Los 3 primeros los reservaremos para crear nuestro cargador. En el Fotograma 4 comienza la película...

NOTA: Junto a cada línea insertaremos comentarios (texto entre los símbolos /* y */) que son líneas que Flash reconoce como tales y que no tiene en cuenta a la hora de ejecutar el código (es como si no existieran). Se usan para clarificar y esplicar el código que escribamos y para eso lo usaremos a continuación. Les cambiaremos el color para que resalten aún más. Evidentemente no son necesarios en el código que finalmente insertemos en nuestra película.

Este es el código que insertaremos:

-----------------------------------------------------------------------------

/* Fotograma 1 */

bytes_totales = getBytesTotal();   /* Hallamos el tamaño de nuestra película con la Acción "getBytesTotal()" y lo almacenamos en la variable bytes_totales. */

-----------------------------------------------------------------------------

 

/* Fotograma 2 */

bytes_cargados = getBytesLoaded();   /* Hallamos los bytes que llevamos cargados en memoria hasta el momento. Este valor lo asignamos a la variable bytes_cargados */

if (bytes_cargados >= bytes_totales) {   /* Esta es la lógica del cargador. Si llevamos cargados en memoria los mismos bytes o más de los que ocupa la película, ejecutamos la siguiente línea */

gotoAndPlay(4);   /* Si hemos llegado hasta aquí es porque toda la película está cargada en memoria (bytes_cargados >= bytes_totales) y podemos comenzar a ver la película. Ejecutamos gotoAndPlay(4) que nos llevará hasta al fotograma donde comienza la película. */

}

else {   /* Si aun no hemos cargado toda la película */

porcentaje = ((bytes_cargados/bytes_totales)*100);   /* Averiguamos el porcentaje que llevamos cargado realizando la división entre los bytes_cargados y los bytes_totales y multiplicándolo por 100 */

txt_salida = Math.floor(porcentaje)+"%";   /* Almacenamos en la variable "txt_salida" el porcentaje que llevamos junto al símbolo "%". En la película principal tendremos un campo de texto dinámico llamado "txt_salida" que nos mostrará el porcentaje de película que llevamos cargado en cada instante */
}

-----------------------------------------------------------------------------

 

/* Fotograma 3 */

gotoAndPlay(2);   /* Si llegamos al fotograma 3 es porque no está cargada toda la película, de lo contrario estaríamos ya en el fotograma 4. Como aún no está cargada, volvemos al fotograma anterior para ver si ya lo está (mediante gotoAndPlay(2);). Esto lo haremos tantas veces como haga falta para dar tiempo al ordenador del usuario a ir cargando en memoria la película. */

-----------------------------------------------------------------------------

 

Resumiendo:

Fotograma 1: En el Fotograma 1 se calculan los bytes totales que ocupa la película. Después pasamos al Fotograma 2.

Fotograma 2: Cada vez que accedamos al Fotograma 2, nuestro código ActionScript averigua los bytes que llevamos cargados en memoria y los compara con los totales (que se hallaron en el Fotograma 1 y no vuelven a averiguarse, pues no varían). Si ya está toda la película cargada, vamos al fotograma 4 y comenzamos a reproducir la película, sino, pasamos al fotograma 3

Fotograma 3: El Fotograma 3 volverá a mandar la cabeza lectora al fotograma 2. Haciendo este ciclo, damos tiempo al ordenador a ir cargando poco a poco la película, hasta que llegue un momento que esté toda cargada y pasemos al Fotograma 4. El cálculo del porcentaje es un "adorno" que nos permitimos, pues con un poco más de esfuerzo averiguamos cuánta película llevamos cargada y la mostramos por pantalla de un modo elegante (en porcentaje) haciendo la espera del usuario menos aburrida.

Fotograma 4: Aquí comienza la película... (Ya no se volverá nunca a ninguno de los fotogramas anteriores).

A la derecha mostramos el resultado. La película se comenzará a cargar al pulsar el botón. El código insertado es EXACTAMENTE el que se muestra arriba, no hay NADA MÁS. Tan sólo se han añadido unos textos y unas imágenes para aumentar el tamaño de la película, de lo contrario la carga sería demasiado rápida y no llegaría a verse.

También se ha insertado el texto dinámico que muestra el porcentaje.

Si el cargador no llega a verse, lo más probable sea que ya esté cargada en la memoria caché de vuestro ordenador o que esteis viendo este curso desde el CD-Rom o desde vuestro propio Disco Duro, donde la velocidad de descarga estan rápida que sería necesaria una película de varios MBytes para que hiciera falta un cargador.

Probad el código en una película que coloqueis en un servidor web y podreis ver los resultados sin problemas.

Podeis poner a prueba vuestros conocimientos realizando la:

  Prueba evaluativa del Tema 18 .

 
   
Aviso legal: Uso off-line autorizado a alumnos de aulaClic exclusivamente. No está permitido utilizar estos cursos en empresas, academias o centros de enseñanza privados.
© aulaClic S.L.Todos los derechos reservados. Prohibida la reproducción por cualquier medio.
Abril-2004.