sábado, 29 de agosto de 2009

Image.java v1.0 - Clase para el reescalar imágenes

Esta pequeña clase surge con la necesidad de reescalar imágenes de cualquier tipo (JPG, PNG, BMP, GIF), normalmente se utiliza esta función al subir imágenes al servidor a través de un servlet, desde un HTML form o con FileReference desde Actionscript.

Las principales características son:
-Soporta todos los formatos de imagen estándares.
- Mantiene las proporciones, si así se le indica.
- Mantiene las transparencias originales, válido para png’s por ejemplo.
- Suaviza las imágenes al reescalar.
- Permite aumentar el tamaño (opcional) para casos en que el tamaño deseado sea mayor al de la imagen.

Es la versión 1.0, si encuentran algún problema por favor contáctenme, a continuación los ejemplos de uso:

Imagen Original, 640x512 pixeles:

Llevado al tamaño preferido: 250,250, sin mantener proporciones:

Llevado al tamaño preferido: 250,250, manteniendo proporciones:

Manteniendo proporciones, el resultado final de la imagen tiene 250x200 pixeles.

Aquí los Archivos Fuente


jueves, 27 de agosto de 2009

Leer la intensidad de sonido desde micrófono en actionscript

Ejemplo que he realizado en 2008 para un juego, captura la intensidad de sonido que ingresa por el micrófono ( o LineIn ).
Para poder grabar/reproducir se necesita conexión RTMP contra un FlashMediaServer/Red5/Woonza, u otro, no obstante se pueden realizar interesantes juegos por medio de esta utilidad.



Archivo Fuente

viernes, 21 de agosto de 2009

Reflection, carga dinámica de clases

En algunas ocaciones es necesario expadir la funcionalidad de aplicaciones java en tiempo de ejecución, dinámicamente, cuando la aplicación está ejecutandose y no se quiere/puede reiniciar el servicio.
Para ello nos podemos valer de dos utilidades: Las Interfaces y el Objeto Class:

Interfaces:
Una interfaz en Java es una clase en la que todos sus métodos son abstractos. En ellas se especifica qué se debe hacer pero no su implementación.

Class:
Tiene un método llamado "forName(String)" que permite buscar una clase dinámicamente.

En el ejemplo que he creado, se puede pasar por como argumento de aplicación una cadena de texto que servirá para localizar la clase:

INTERFAZ - IJuego.java

package juegos;

public interface IJuego {

boolean doInit();
boolean doClientAction(int usuario_id, Object response);
boolean doEnd();
}


IMPLEMENTACION - JuegoA.java

package juegos.implementation;

import juegos.IJuego;

public class JuegoA implements IJuego {

@Override
public boolean doInit(){
System.out.println("doInit juego 11: " + this.getClass().getName() );
return true;
}
@Override
public boolean doClientAction(int usuario_id, Object response){
return true;
}
@Override
public boolean doEnd(){
return true;
}
}


UTILIZACION DINAMICA - Principal.java

import juegos.IJuego;


public class Principal {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String classname = null;
if (args.length > 0) {
classname = (String) args[0];
}
if(classname!=null){
System.out.println("Nombre de clase definido como argumento");
new Principal().initGame( classname );
}else{
new Principal().initGame("juegos.implementation.JuegoC");
}
}
private void initGame( String nombreclase ){
IJuego juego;
Class instancia;
try{
instancia = Class.forName( nombreclase );
juego = (IJuego) instancia.newInstance();
juego.doInit();
}catch( Exception e ){
System.out.println( "Exepción: " + e.getMessage() );
e.printStackTrace();
}

}
}



Fuentes (proyecto java en eclipse)

miércoles, 12 de agosto de 2009

FilesToXML v1

Utilidad escrita en java que lee todos los archivos de un directorio y lo pasa a simples nodos XML.

Tuve la necesidad de crear la herramienta para evitar la tediosa tarea de pasar uno a uno los nombres de archivos a XML.

Se puede parametrizar:
- Nombre del prefijo para los nodos
- Tipos de archivo admitidos, separados por coma, o * (todos)

Captura

martes, 11 de agosto de 2009

Botón flash dinánico, definido desde Html

A veces es necesario pasar parámetros a un objeto flash desde una página HTML con el objetivo de reutilizar un mismo objeto flash.

Ejemplo:



En la declaración del Objeto Flash en HTML, reemplazar:

as2_bottom_embed.swf?label=Google&url=http://www.google.com&window=_self

Utilizando los criterios:
as2_bottom_embed.swf?label=ETIQUETA&url=DIRECCION&window=WINDOW

ETIQUETA: Texto del botón.
DIRECCION: Dirección web de destino
WINDOW: _blank | _self | _parent |_top


ATENCIÓN: Por cuestiones de seguridad las pruebas fuera de un servidor Web podrán no funcionar.


Archivos del ejemplo

lunes, 10 de agosto de 2009

FLADE pequeño motor de física para Actionscript2

No es común encontrar motores de física para Actionscript 2, sin embargo hay proyectos As2 que lo requieren, a inicios del año pasado (2008) tuve que utilizarlo para un juego, lo recomiendo es muy sencillo de utilizar y ampliar:

Motor de física FLADE (As2)

Un ejemplo rápido que hice recién:



Si tienen un proyecto en As3 o están por comenzar uno, recomiendo el motor isométrico del mismo autor:

Motor de física APE (As3)

Saludos.

martes, 4 de agosto de 2009

Determinar si un número es par o impar en ActionScript 2 o ActionScript 3

En ActionScript 2 y ActionScript 3:

var numero:Number = 2;
var par:Boolean = numero/2 === Math.round(numero/2);
trace("Es par? " + par);