Etiquetas: System setClipboard
Con esta linea podemos copiar un texto al portapapeles del usuario desde Flash. La sintaxis es igual para Actionscript 2.0 y Actionscript 3.0:
System.setClipboard("El texto que queremos copiar");
Es muy útil por ejemplo si tenemos una web que genera códigos o urls personalizadas y queremos dar al usuario la oportunidad de copiarlas copn un botón.
Actualmente hay varias opciones disponibles a la hora de compartir una url en Facebook. Por orden de complejidad, serían estas:
1) Llamar a sharer.php pasando como parámetro la url que queremos compartir, por ejemplo:
http://www.facebook.com/sharer.php?u=http://www.esedeerre.com
Que nos llevaría a algo parecido a esto:

Siguiendo esta opción, Facebook comprueba la url que le hemos pasado, y extrae el title de la página para ponerlo como título de la ficha, el description para ponerlo como cuerpo del mensaje, y las imágenes del body de la página para darnos a elegir la miniatura que queremos poner.
Uno de los puntos negativos de esta opción, es que Facebook cachea estos contenidos, es decir, que si compartimos nuestra página y luego cambiamos el title, description o miniaturas, al volver a compartir seguirán viendose los datos antiguos en la ficha de Facebook durante unas horas.
2) Hacer lo mismo que en el punto 1, pero especificar a Facebook los datos con los que queremos compartir. Es decir, en lugar de hacer que Facebook coja el title, description e imágenes de nuestra página, especificamos unos contenidos para esta acción mediante estas etiquetas:
Estas etiquetas se colocan dentro del head de nuestra página, y dentro del parámetro content de cada una podemos especificar el texto / ruta que queremos utilizar.
Igual que con el punto 1, tenemos el inconveniente de que Facebook cachea estos contenidos, asi que si hacemos alguna prueba con estas etiquetas, y después hacemos algún ajuste en ellas, pasarán algunas horas hasta que Facebook reconozca los cambios.
3) Llamar a sharer.php y pasar, además de la url, los textos e imágenes con los que queremos compartir. Algo asi:
http://www.facebook.com/sharer.php?s=100&p[url]=http://www.esedeerre.com&p[images][0]=http://www.esedeerre.com/banners/esedeerre.jpg&p[title]=Ejemplos de Flash&p[summary]=Tutoriales de flash y actionscript en castellano
De esta forma no cachea el título ni la descripción, pero si las imágenes.
Por supuesto, podemos utilizar cualquiera de los 3 métodos desde Actionscript 2.0 con un getURL o desde Actionscript 3.0 con un navigateToURL.
Etiquetas: navigateToURL
Esta es una función en Actionscript 3.0 para publicar (de la manera "fácil") una actualización en el perfil de Twitter del usuario. Recibe como parámetro el texto que queremos que se publique:
private function publicarTwitter(str:String):void
{var ruta_twitter:String = "http://twitter.com/home?status=" + encodeURI(str);
navigateToURL(new URLRequest(ruta_twitter), '_blank');
}Con esta forma de publicar, dejamos todo el control de sesión / login a Twitter, pero nos ahorramos utilizar alguna API.
Etiquetas: Event.CHANGE TextEvent.INPUT focus setSelection
Lo primero que tenemos que hacer para ir formateando el texto mientras el usuario escribe es añadir un listener para el evento change al campo de texto:
Texto_txt.addEventListener(Event.CHANGE,textoDentro);
Es importante que utilicemos el evento Event.CHANGE en lugar del TextEvent.INPUT, ya que el segundo se distribuye antes de que el campo se haya actualizado. Es decir, que si escribimos una "a" en el campo, flash lanza el evento TextEvent.INPUT, actualiza el valor .text del campo y lanza el eveno Event.CHANGE.
Después creamos la función que recoja el evento:
function textoDentro(e:Event):void {
e.target.text = formatear(e.target.text.split(".").join(""));
e.target.setSelection(e.target.text.length, e.target.text.length);
}En esta función hacemos dos cosas. Primero cogemos el texto del campo, le quitamos los puntos y lo mandamos a la función que lo va a formatear:
e.target.text = formatear(e.target.text.split(".").join(""));
Después ponemos el cursor al final del campo para que el usuario pueda seguir escribiendo al final del número:
e.target.setSelection(e.target.text.length, e.target.text.length);
La función que evalúa el número y le pone los puntos es esta:
function formatear(strNumber:String):String {
while (strNumber.substr(0, 1) == "0") {
strNumber = strNumber.substr(1);
}var dollar_array:Array = new Array();
var start:Number;
var end:Number = strNumber.length;
while (end > 0) {
start = Math.max(end - 3, 0);
dollar_array.unshift(strNumber.slice(start, end));
end = start;
}return dollar_array.join(".");
}Etiquetas: stageFocusRect
Otra linea que se me olvida siempre. Si queremos que no aparezca (en Actionscript 3.0) el rectángulo amarillo que aparece al pulsar la tecla de tabulación, tenemos que poner la siguiente linea:
stage.stageFocusRect = false;
Etiquetas: viewport buttonMode
Cuando tenemos un elemento clicable en Papervision3d, al hacer roll over y roll out sobre el elemento, no sale el handCursor (la "manita") por defecto. Para activarlo, tenemos que activar/desactivar la propiedad buttonMode del viewPort cuando hagamos over y out sobre el elemento. En resumen, al hacer over sobre un elemento, hacemos:
viewport.buttonMode=true;
y al hacer out en un elemento:
viewport.buttonMode=false;
Etiquetas: FLVPlayback
Esta linea sirve para habilitar el suavizado (smoothing) en un componente FLVPlayback. Aunque el rendimiento se resiente bastante, puede ser útil si tenemos que reescalar el vídeo o este es de muy poca calidad
//Suponiendo que el FLVPlayback se llama "player"player.getVideoPlayer(player.activeVideoPlayerIndex).smoothing = true;
Etiquetas: Molehill
Adobe ha anunciado el lanzamiento de un paquete de APIs que hacen uso de aceleración 3D por hardware. Estas APIs estarán disponibles en la primera mitad de 2011 con la nueva versión del player. De momento ya han salido varias demos hechas por el equipo del Alternativa3D.
Etiquetas: save() encode() FileReference JPGEncoder
Una de las novedades de Flash Player 10 fue la función save() de FileReference.
Esta clase permite guardar un archivo directamente en el ordenador del usuario, si necesidad de pasar por el servidor.
En este ejemplo, guardo una captura del stage en una imagen codificada como jpg (utilizando la clase JPGEncoder de adobe y la función save():
/** * * @param e * Para guardar: * 0. Oculto el botón de guardar para que no salga en el pantallazo * 1. Crear un Bitmapdata con el objeto que queremos guardar * 2. Crear un bitmap con ese BitmapData * 3. Crear una variable de tipo JPGEncoder(la calidad de 1 a 100) * 4. Llamar a la función encode de JPGEncoder pasando como parámetro el bitmapData * 5. Llamar a la función save() de FileReference pasando como parámetro el ByteArray del punto anterior y el nombre * con el que queremos guardar el archivo * 6. Mostrar de nuevo el botón de guardar */private function guardar(e:MouseEvent):void {
boton_guardar.visible = false;
var bitmapData:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight);
bitmapData.draw(stage);
var bitmap:Bitmap = new Bitmap(bitmapData)
var jpg:JPGEncoder = new JPGEncoder(80);
var ba:ByteArray = jpg.encode(bitmapData);
file.save(ba, 'captura.jpg');
boton_guardar.visible = true;
}Una de las cosas "pendientes" en esedeerre, era crear una sección de enlaces interesantes. Hasta ahora no lo hemos hecho para no "ensuciar" la web y mantener la visibilidad de los tutoriales.
Esto va a seguir asi en la web, pero hemos creado una página en Facebook para crear una página allí que aloje todos estos enlaces a otras páginas con noticias, tutoriales y snippets.