Etiquetas: ColorPicker ColorTransform ColorPickerEvent
Etiquetas: PointLight3D GouraudShader FlatShader CellShader PhongShader ShadedMaterial
Una de las novedades de Papervision GreatWhite son los ShadedMaterial.
Para utilizarlos basta con seguir los siguientes pasos:
Etiquetas: API Flickr Papervision GreatWhite
Etiquetas: SoundChannel Sound ByteArray computeSpectrum
Con AS3 podemos visualizar el espectro de sonido de un audio. Con unas pocas lineas de código, podemos hacer cosas impensables con anteriores versiones del lenguaje. Este es el resumen del código:
-Creo un objeto de tipo Sound() y cargo en él archivo mp3:
sonido = new Sound();
var request:URLRequest = new URLRequest(url);
sonido.addEventListener(Event.COMPLETE, sonidoCargado);
sonido.load(request);
-Programo la carga para que cuando termine se ejecute la función sonidoCargado. En esta función reproduzco el sonido (canal = sonido.play(0,1000);) y añado un evento para que se pinte el espectro de sonido (addEventListener(Event.ENTER_FRAME,mover)).
-La función mover es la encargada de "Pintar" el espectro. El espectro se almacena en la variable arrayMixer en forma de matriz de bits. Los elementos de esta matriz pueden ser 1 o 0. Resumiendo, podemos decir que cuantos más 1 haya, más "alto suena el sonido". Recorro la matriz y sumo todos esos 1, para ver como de grande tengo que pintar la barra de volumen. Cuando tengo ese valor lo almaceno en la matriz de volúmenes. Depués de esto, recorro toda la matriz de volúmenes y pinto una barra para cada valor almacenado.
El código completo:
package {import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.utils.ByteArray;
import flash.net.*;
public class CargadorSonidos extends Sprite {
var url:String = "sonido.mp3";
var canal:SoundChannel;var sonido:Sound;
var fourierTransform:Boolean = false;
var arrayMixer:ByteArray = new ByteArray();
var volumenes:Array = new Array();
public function CargadorSonidos():void {
cargarSonido();
}function cargarSonido():void {
SoundMixer.stopAll();
sonido = new Sound();
var request:URLRequest = new URLRequest(url);
sonido.addEventListener(Event.COMPLETE, sonidoCargado);
sonido.load(request);
}function sonidoCargado(event:Event):void {
canal = sonido.play(0,1000);
addEventListener(Event.ENTER_FRAME,mover);
}function mover(e:Event):void {
SoundMixer.computeSpectrum(arrayMixer, true);
var c = 0;
for (var i = 0; i < arrayMixer.length; i++) {
c += arrayMixer[i];
}volumenes.push(c);
if (volumenes.length > 400) {
volumenes.splice(0,1);
}graphics.clear();
graphics.lineStyle(1, 0x000000);
graphics.beginFill(0x000000);
for (var j = 0; j < volumenes.length; j++) {
graphics.lineTo(j,100+volumenes[j]/1200);
graphics.lineTo(j,100-volumenes[j]/1200);
graphics.moveTo(j,100);
}graphics.lineTo(volumenes.length,100);
graphics.lineTo(0,100);
} }}Etiquetas: API Flickr GreatWhite
Etiquetas: crossdomain
Por limitaciones de seguridad, Flash player no permite cargar archivos (jpg, swf, etc..) de otros dominios, a menos que en el servidor que almacena los archivos haya un fichero que indique que el dominio que solicita la carga es de confianza. Este fichero de configuración es "crossdomain.xml", y en él se pueden indicar qué dominios queremos que puedan acceder a los archivos que se alojan en nuestro servidor.
Por ejemplo si tenemos unas fotos almacenadas en el servidor A y queremos cargarlas en nuestra página hecha en Flash alojada en el servidor B, tendremos que poner en A un fichero crossdomain que indique que el servidor A es de confianza. Un ejemplo de fichero crossdomain seria:
<cross-domain-policy> <allow-access-from domain="www.esedeerre.com"/> <allow-access-from domain="www.google.com" /></cross-domain-policy>En él estamos diciendo que permitimos las cargas de archivos de nuestro servidor para todas las peticiones hechas desde los dominios www.esedeerre.com y www.google.com. También podemos marcar todos los dominios como permitidos de esta forma:
<cross-domain-policy> <allow-access-from domain="*" /></cross-domain-policy>Un ejemplo de este tipo de fichero crossdomain, podemos verlo en los servidores de Flickr, que contienen estos archivos para permitir cargas de fotos desde otros dominios por medio de su API. Cuando Flash hace una carga de un archivo alojado en otro dominio, busca en este dominio el fichero "crossdomain.xml", y si no lo encuentra, no permite la carga del archivo.
Tenemos dos maneras de hacerlo:
-Utilizando Joykey. Este programa transforma los movimentos del joystick en eventos de teclado. Es decir, programamos el flash como si fueramos a usar teclas, y luego configuramos este programa para que genere los eventos de las teclas que queremos utilizar.
-Utilizando un joystick que genere eventos de teclado. Esta creo que es la mejor opción si tenemos que programar una aplicación que va a estar de cara al público y se maneja con joystick: encargar a alguna empresa de electrónica que nos construya un joystick "a medida" y se comporte como el programa necesite.
Etiquetas: loadMovie movieClipLoader Loader
Etiquetas: InteractiveScene3DEvent InteractiveColorMaterial extra interactiveSceneManager renderCamera