miércoles, diciembre 17, 2008

Imagenes: Fotografias Costarricenses

En busca de las mejores imágenes costarricenses en la actualidad, aquí hay una pequeña recopilación de lo que se puede encontrar con un poco de paciencia.

No voy a poner mucho comentario, creo que las fotos se explican por si solas.



Terror Psicológico

Terror Psicológico por Luis Mata



Soy fanático de los atardeceres

Atardecer dominical
Atardecer dominical por Jose Campos






Imagen de mi buen Amigo Audy Sanabria con quien colaboro en otros proyectos.

canoa
Canoa por AudyoVisual




Hospital San Juan de Dios
Hospital San Juan de Dios por priscilla.mora



La otra semana buscaré más imágenes impresionantes.

martes, diciembre 16, 2008

Web Review: Falso o No? Vaarennos vai ei

Conviértete en una estrella de cine y haga su propia película. Seleccione uno de estos clásicos.

Buscando una pagina web interesante para pasar el rato, me encontré con esta pagina Finlandesa; para el que sepa finlandés excelente, para el que no, pues no es tan difícil de navegar, y es bastante intuitiva a pesar que no conozcas el idioma

Väärennos vai ei significa Falso o No, y va de la mano con el hecho que podés cargar tu foto o la de alguien que conozcas en una película antigua, para verla en la trama.

Me parece que es algo entretenido y para vacilar un rato, ademas de tomar ideas para usar en diferentes paginas web donde se podría cargar elemento dinámico para tener una experiencia interactiva.

Al cargarse la imagen para el rostro del personaje principal, te mostrarán un video de la película escogida, y el personaje con tu rostro. Luego si te parece el resultado, podés enviárselo a alguien o copiar el link y tenerlo para ti y los demás, o un código embed para colocarlo en tu sitio web

Lo útil de esto es que en poco tiempo podés hacer que muchas personas te visiten con la excusa de, verte a ti en el video, o ponerse a ellos mismos.

Visitar Väärennos vai ei

lunes, diciembre 15, 2008

Animaciones: Адажио Adagio, Jojo In The Stars y Fungi Film

Dediqué estos días a ver unos cortos que me parecen sorprendentes, no solo por su significado, sino por su estilo particular.

Ahora que comparo las tres... creo que ninguna tiene final feliz...

Adagio (Rusia)
Director Gari Bardin
Un excelente trabajo hecho con unas hojas de papel y un extraño sentimiento religioso.







Jojo in the Stars (United Kingdom)
Director Marc Craste
Muy triste la historia, un buen trabajo de animación que merece ver los detalles más de una vez.





Fungi Film (Costa Rica)
Director Zavorio
Aqui veo el avance de la animación independiente costarricense.

miércoles, noviembre 26, 2008

Flash as3 - Tutorial II - Propiedades y Programacion Basica

Avanzando más en el código, nos dispondremos a ver las características principales de los objetos de Flash, los cuales debemos tener en mente al momento de programar, e incluso de hacer una animación por código.

Básicamente, cuando estamos en Flash, tenemos la capacidad de modificar las propiedades de cada objeto, por medio del código; esto será visible en tiempo de ejecución, y no durante el tiempo de diseño; estas propiedades pueden ser tan simples como la coordenada X y Y, o el color del objeto, o en algo más complicado, utilizando el MatrixTransformer para obtener otros resultados.

Considero que la forma más rápida de aprender el código, es utilizando los objetos Flash que han existido por un largo tiempo, y luego se puede ir a las classes superiores, o luego heredar de estas. Los objetos son Button en as2 y SimpleButton en as3, y MovieClip.

Antes de empezar con un ejemplo, tengo que hacer referencia sobre donde se coloca el código de action script, y esto se hace en un solo layer, que se deja en blanco solo para que esté el código, no debe existir ningún objeto de ningún tipo en esta layer.


Layer Actions y Panel de Código Fig 1

Para ingresar el código en esta layer, seleccione con el mouse el primer fotograma o keyframe, indicado en la Fig 1 en color negro y bajo el numero 1 de la linea de tiempo o timeline, y luego presione la tecla F9. El panel aparece como una ventana de tab adherible al escenario, y con una leyenda que dice Actions-Fotograma dependiendo del idioma.

Si necesita ingresar una nueva layer, presione el primer botón indicado en la Fig 2, y aparecerá una nueva capa sobre la capa existente, por costumbre, la layer actions, va sobre todas las layers, para fácil ubicación, asi que la layer se puede seleccionar y arrastrar con el mouse sobre la nueva layer.


Insertar Nueva Layer Fig 2


Para nuestro ejemplo haremos dos objetos, un Button o SimpleButton, y un MovieClip, agregaremos funcionalidad al Button, para que modifique al MovieClip. El Button será a base de un shape cuadrado azul y convertido con F8, y el MovieClip será a base de un shape cuadrado rojo y convertido con la tecla F8; el Button se llamará my_btn, y el MovieClip my_mc; estos sufijos son necesarios para cada instancia (_mc, _btn) para forzar al Flash a desplegar las propiedades inherentes a cada Class, si bien se pueden intercambiar, la idea es tener el que corresponde para obtener las propiedades correctas.

El nombre de cada objeto se coloca en el panel de propiedades (Fig 3), primero se selecciona el objeto y luego se presiona Ctrl-F3 si el panel no está visible, y el nombre que usaremos en el código se coloca en la caja de texto que dice en color gris claro.


Insertando nombre de instancia Fig 3

Colocados los nombres desplegamos el panel de código de actionscript, seleccionado el primer frame del layer actions y presionando F9, luego digitamos el siguiente código, de acuerdo a la versión que manejemos, as2, o as3:

Ambos códigos hacen lo mismo, pero desde puntos de vista a futuro, el código as3 es mas útil para un programador, pero el código as2, es más útil para un diseñador, ya que es más cercano a nuestro lenguaje.


Aquí, al boton le decimos que cuando el Event de Mouse Click se realice sobre él, se ejecute la function onClick.

Luego la function onClick tiene un parametro e de tipo MouseEvent, éste carga con un monton de propiedades necesarias que hacen referencia al objeto que realizó y sobre el que se realiza la accion, por ejemplo, currentTarget, es el boton al que hicimos click.

En la definición del Function llamamos directamente a my_mc, y variamos una de sus propiedades (rotation), la incrementamos cada vez en 25;
  • as3


my_btn.addEventListener(MouseEvent.CLICK,onClik)

function onClik(e:MouseEvent){
var boton:SimpleButton = e.currentTarget as SimpleButton
trace(boton.name)
my_mc.rotation += 25;
}


Aqui es casi lo mismo, antes, en as2, para definirse al objeto que llama a la Function, usamos this, y el evento está dentro del mismo botón, así que asignamos una Function sin nombre y dentro ponemos lo que necesitamos que deba suceder.
  • as2


my_btn.onPress = function(){
trace(this)
my_mc._rotation += 25;
}


Presione Control Enter y vea el resultado al presionar el botón.

Descargar Archivos del tutorial






lunes, noviembre 24, 2008

Flash as3 - Tutorial I - Bases

Si estás leyendo esto seguro ya has visto alguna animación en flash y quieres hacer algo por que te ha emocionado desde hace tiempo, así que no perdamos tiempo, empecemos.

En flash se trabaja en dos conceptos separados que se pueden unir dependiendo de tanto tiempo tengas para hacer una o la otra, estas son:

  • animación: Esto es lo que nos atrae por primera vez a flash, una buena animación con increíbles efectos. Diseñadores y cualquier persona en general toman la decisión de aprender flash por estas razones.
  • programación: esta es la menor de las razones, pero es la razón por las cuales los que se decidieron por la primera claudican rápidamente, ya que la van a necesitar, pero es la razón por las cuales muchas personas pueden ver el potencial más allá de una simple animación.
Así que si para este punto ud no sabe programación, mejor le interesará hacer cosas con Photoshop o Corel Draw.

Cosas Basicas de flash

En flash el escenario es su universo, cada layer representa un plano en donde usted puede colocar objetos como dibujos en una hoja de papel, cada layer ocupa una posición desde abajo hacia arriba, y cada layer puede ser cambiada de posición, la logica de esto va desde, una animación en la que un árbol va frente a una montaña, y en programación con el hecho ejemplo base de que no puedes hacerle click a un botón si el cursor está abajo.


Cada objeto que dibujemos o pongamos en el escenario puede tener su propio universo manipulable de la misma forma o parecida que el escenario raíz, dependiendo de que tipo de objeto le digamos que sea, asi tenemos

  • Shapes: dibujos hechos a mano alzada con el flash, figuras, formas, rectángulos, que se ven afectados unos a otros si cada shape se toca entre si.
Flash shapes fig 1
Flash shapes fig 1
  • Groups: presionando CTL-G tomamos uno o mas objetos y podemos agruparlos para manipularlos en modo de diseño como uno solo{atención que solo dije modo de diseño}. Al seleccionar un grupo se crea un marco de color alrededor que simboliza la unión de estos; su contenido puede ser accesado haciendo doble click.
Flash graphics group Fig 2
Flash graphics group Fig 2


  • Graphics: es un objeto especial con la propiedad de contener una animación sin interactuar este objeto con el código, seleccionamos un objeto y presionamos F8, y seleccionamos Graphic y damos aceptar, ahora puedes elegir cambiarle el color a este objeto en tiempo de diseño, si la animación se puede reproducir una vez, indefinidamente, o si solo es un fotograma estático.Cambiando color a un Graphic Fig 3
Cambiando color a un Graphic Fig 3
  • Button: un tipo con mas propiedades, se puede llamar a cada uno específicamente desde el código, se pueden establecer estados de comportamiento, como que pasará cuando se pone el mouse encima, o que pasará cuando se quita el mouse, o se presiona este, esto en animación, otros comportamientos se pueden establecer por medio de código. Selecciona un shape, presiona F8 selecciona Button y ya tienes un botón.
Dentro de un Button Fig 4


  • MovieClip: El objeto mas usado en flash, puede tener todas la propiedades que has leído en los objetos anteriores, incluso su propio universo como el escenario( stage) donde puedes poner otros objetos como los anteriores. Se puede accesar por codigo al igual que un button. Selecciona un shape, presiona F8 selecciona MovieClip y ya tienes uno.

Creando un MovieClip a partir de un Shape Fig 5


Buttons y MovieClips se pueden llamar desde el código, y manipular todas sus propiedades según la ocasión.

Propiedades de un Button Fig 5Propiedades de un Button Fig 6

Cada que creas un Symbol de estos se agrega a la Biblioteca (F11), puedes hacer copias de estos en el escenario arrastrandolos a este, pero cada que haces esto puede ser una ventaja o desventaja segun la ocasion, cada symbol por debajo es el mismo, asi que si lo modificas por debajo se reflejará en todos, asi que se debe pensar con anterioridad.

Cambiando al Button internamente
Cambiando al Button internamente
todos los demás se modifican. Fig 7

Esta ha sido la primera parte del tutorial, cualquier duda será bien recibida, y podrá también servir para crear la siguiente parte del tutorial.
Cada vez iremos progresando en animación, código básico y avanzado.

Espero haya sido de utilidad.

martes, octubre 07, 2008

Cantamos el Bosque Electrico

Me encantan las animaciones de Grickle, simplemente hermosas y terroríficas, y esta tiene algo más, ese extraño componente musical... la risa! y el terror predecible... pero a quién le importa? jaja disfruten!

martes, septiembre 23, 2008

Adobe CS4 Liberado!




Hoy a las 10 am hora de Costa Rica, me asombré al ver la transmisión en vivo por Internet provista por Adobe mostrando las nuevas capacidades que tienen sus productos.
Muchos ya conocidos por todos, pero ahora por fin para poder usarlos, estas nuevas cualidades harán que las tareas repetitivas sean mas simples para los que trabajamos en medios.

Si bien no hablaban mucho de Flash en sí, hablaban de las demás herramientas con las capacidades enfocadas a lo que se necesita para Flash, e intercalado mostraron esas nuevas características.

Photoshop ahora tiene la capacidad de cargar imágenes de 2GB sin atascarse en memoria! al hacer zoom se hace un preview y carga la zona requerida actual, osea que no se verá más que lo necesario.

Además al cargar imágenes panorámicas el mismo programa crea una vista en 3D para recorrer la imagen.

También se pueden cargar modelos en 3D y pintarlos y rotar los mismos objetos dentro de la herramienta, ademas de poder pintarlo con imágenes comunes(texturas).

Incluso ahora se puede escalar una imagen previendo si se quiere que una zona se deba escalar, para que no se vea "estirada" o "apretada" al momento de ajustar.

En Illustrator ahora se puede crear una especie de archivo de proyecto, donde puedes tener abiertos al mismo tiempo varios .ai y verlos al mismo tiempo, con la capacidad de copiar objetos de un diseño a otro sin pasar entre ventanas.

También la brocha Blob, que genera un area de pintura que al terminar crea un stroke alrededor.

Indesign ahora tiene la capacidad de exportar directamente al flash.

Flash tiene la capacidad de poder visualizar el path de los motion tweens, y poder modificarlos, ademas de ahora tener bones para hacer inverse kinematics, haciendo joints entre objetos y completamente articulados y con gravedad, asi si creás una cadena, cada parte reaccionará por el efecto de la que tiene a la par.

Flash tambien tiene ahora un manejo especifico de propiedades para la animación como lo hace After Effects, y como muchos ya conocen, ahora junto con Astro(flash player 10) la capacidad de modifcar los ejes tridimencionales.

After Effects ahora tiene la capacidad de idenficar las palabras que se mencionan en una edición de video, como por ejemplo para contarlas; ademas de poder reemplazar una pantalla verde casi automáticamente, lo que antes tomaba mucho más tiempo

No son todos los efectos que existes de estas aplicaciones, pero si los que me parecieron muy relevantes

sábado, septiembre 06, 2008

Jerry Seinfield y Bill Gates en un comercial para Vista

Sinceramente es algo confuso como usuario programador nacido en Windows ver este comercial, por que parece no tener sentido... si esta gracioso, vacilón como solo Seinfield sabe hacerlo, pero parece que dura mucho para llegar el punto.

La cosa es que todavía falta un rato para que salga Windows 7, entonces tiene sentido que Microsoft apunte a ganarse al publico como lo hizo Apple para ganárselo de igual forma con sus comerciales Mac vs PC; y por lo menos tendremos un rato de diversion viendo estos intentos de ganarnos.

domingo, agosto 24, 2008

Firefox y Adobe Flash consumiendo a Internet Explorer

Recientemente leí que hartos de esperar a que IE (Internet Explorer) agregara complementos de verdad a su browser, Mozilla y Adobe han unido fuerzas para que, en el proximo release de Flash Player, se instalen nuevas capacidad a IE que deberian a esta altura ser ya estandar.

En el articulo Firefox Caníbal se da la impresion que este browser consumirá poco a poco a IE desde adentro, para convertirlo en un browser con funcionalidades FireFox(FF), pero que lograrian metiendose en la programacion de Microsoft? a mi gusto nada, como desarrolladores claro que nos simplificaria la vida, pero igual, si no actualizas tu IE igual tendrás que desarrollar de forma de compatibilidad hacia atrás, entonces quedamos en las mismas.

Entonces de que sirve este ataque por los costados?
Bueno, a mi parecer, si un usuario arraigado a IE ve las imcreibles capacidades de FF en su propio navegador, decidirá tarde o temprano por usarlo, entonces ya no necesitarias IE, haciendo que Microsoft decida porfin actualizar su browser, pero la verdad para qué? si ya me sirve perfectamente mi FF... entonces no tiene sentido tal ataque, a menos que quieras desaparecer de la tierra a IE, lo que no me parece tan mal.

Firefox caníbal: Mozilla desarrolla pugins para IE, cansado de esperar a Microsoft

lunes, agosto 18, 2008

RSS ATOM Reader en Adobe Flash AS3

Este fin de semana tuve un cierto éxito al crear un lector de feeds basados en XML y mejor aun en AS3. Lo interesante es que comencé creando solo una forma para leer mis propios blogs desde mi pagina principal (absulit.net), para que aquel que quisiera asomarse de forma rápida en el ultimo post, tambien viera la galeria.

Rápidamente me di cuenta que por los tipos de formato diferente que representan Atom y RSS se me iba a dificultar leer un post, asi que opté por una lectura recursiva de todos los nodos:

Si hay nodo:
si es el tag que necesito:
si es de tipo 3(el texto final): escribirlo
si no: tomar nodo hijo y volver al inicio

Ahora, ha sucedido un inconveniente que desconozco razon, y es que al usar IE no logra conexion, y no carga el XML, por lo que lo considero aun en fase de desarrolo, pero que aplicado este conocimiento en ASPX puede dar buenos resultados para crear tickers de noticias, o solo cargar los encabezados o partes especificas de un feed.

Sin embargo pueden ver su funcionamiento beta dentro de mi pagina principal

lunes, junio 30, 2008

El Marketing Viral en las Paginas Web

El estar involucrado en el negocio de las paginas web me ha abierto la mente a un mundo de posibilidades sobre la forma en que se nos puede, o podemos vender un producto.

En la actualidad, y de ahí hacia atrás, las personas hemos sido invadidas por el ataque de los medios, en que se nos presenta un producto sobre los demás, haciéndonos ver que, este producto, es superior a otros de su misma clase; esto seria fantástico si no interrumpiera nuestro programa favorito en la televisión, o nuestra música en la radio.

De esta forma, el usuario ha aprendido a bloquear estas influencias como por ejemplo cambiando de canal, o simplemente huyendo a Internet, donde la fabrica de comerciales queda bloqueada... a menos que nosotros decidamos verlos...

Entonces se produce el siguiente fenómeno, un usuario verá publicidad solo si quiere. ¿Cómo es esto posible? Sencillo, un usuario solo lo hará en el momento que necesite información con respecto a un producto, pero no se quedará ahí, esperará que a cambio le den lo que quiere, una razon para quedarse viendo publicidad, osea entretenimiento.

Páginas que realizan esto muy bien son como la muy cambiante y conocida página de Nike, donde el increíble manejo de medios utilizando Adobe Flash y herramientas afines, le brindan al usuario una experiencia de entretenimiento inigualable... y es un éxito si al pasar los días... recuerdas la marca...

Es una estrategia simple, rodeas tu marca de cosas impresionantes, y el usuario relacionará la marca con ella, y la marca por lógica, se vuelve asombrosa.

  • Marketing Viral
El marketing viral, mas que un paso genial, es un plan que puede durar hasta un año, el mejor ejemplo de esto, son las paginas relacionadas a la película The Dark Knight, que mantienen vivo el gusto de los fan con la película sin que se den cuenta, rodeándolos de juegos del Joker, pistas a otros sitios web para descubrir el siguiente juego, claro que todo para que vayas a ver la película, aunque personas como yo, igual la veremos y de paso disfrutamos de este marketing... acaso habrán logrado su cometido conmigo?

  • Impresionando
Esto solo se puede lograr con una visión a futuro, y relacionándose con el usuario, intercambiando, innovando, siendo el mejor. Una pagina impresionante te hará decir wow la primera vez que entres, pero será olvidada si no esta cambiando constantemente, o teniendo información útil que respalde esa falta de innovación.

La única solución es ser tan creativo como sea imaginable, rodeándose de personas crean que todo es posible, diseñando interfaces impresionantes, y utilizando las herramientas desde un punto de vista fuera de la programación, y más amarrado al diseño, sin preocuparse si se puede o no hacer, sino mas bien, por lo increíble como lucirá.

lunes, mayo 19, 2008

Codigo Util para Java I I - Archivos de Texto

Tareas básicas al trabajar en java para la Universidad serian una como, leer un archivo, recorrerlo linea por línea, contar el numero de lineas, hacer que cada linea tenga una serie de registros, guardar datos, recuperar... cosas asi...

No voy a extenderme en explicar el codigo que está dentro de los metodos, sino mas bien, la utilizacion de la clase, ya que tiene una forma especial de usarse, que si no se hace correctamente no funcionará:

Nombre del fichero: Archivos.java


import java.io.*;
import java.util.*;


public class Archivos {
private File archivo;
private FileReader in;
private FileWriter out;
private FileOutputStream fos;
private ObjectOutputStream oos;
private FileInputStream fis;
private ObjectInputStream ois;
private static Archivos archivos;


public Archivos() {
super();

}

public static Archivos getInstance() {
if(archivos == null){
archivos = new Archivos();
}
return archivos;
}

public synchronized void escribirArchivo(String ruta, String contenido) throws IOException {
getInstance();
File file = new File(ruta);
out = new FileWriter(file.getAbsolutePath(), true);
out.write(contenido);
out.close();
}

public synchronized String leerArchivo(String ruta) throws IOException, FileNotFoundException {
StringBuffer cadena = new StringBuffer();
in = new FileReader(ruta);

int c = 0;
while((c = in.read()) != -1) {
cadena.append((char) c);
}

return cadena.toString();
}

public synchronized void copiarArchivo(String origen, String destino, boolean annadir) throws IOException, FileNotFoundException {
File archivoOrigen = new File(origen);
File archivoDestino = new File(destino);

in = new FileReader(archivoOrigen.getAbsolutePath());
out = new FileWriter(archivoDestino.getAbsolutePath(), annadir);

int caracter = 0;
while ((caracter = in.read()) != -1) {
out.write(caracter);
}

in.close();
out.close();
}

public synchronized void guardarObjeto(String ruta, Object objeto) throws IOException {
fos = new FileOutputStream(ruta);
oos = new ObjectOutputStream(fos);
oos.writeObject(objeto);
fos.flush();
}

public synchronized Object recuperarObjeto(String ruta) throws IOException, FileNotFoundException, ClassNotFoundException {
fis = new FileInputStream(ruta);
ois = new ObjectInputStream(fis);
return ois.readObject();
}
}






Sencillamente hacen una instancia de la clase (es obligatorio), se llama a el metodo que lo instancia (cada vez que se va a abrir un nuevo archivo) y luego se procede a utilizar los metodos propios de la clase


Archivos miArchivo = new Archivos();
miArchivo = Archivos.getInstance();
try{

String ruta = "c:\salida.txt";
String contenido = ES.leer("Digite el texto a Continuacion: \n");
miArchivo.escribirArchivo(ruta,contenido);

ES.imprimir("\nContenido del Archivo: \n\n" + miArchivo.leerArchivo(ruta));
}catch(Exception e){
ES.imprimir(e)
}



Utilizando la clase de la publicación anterior, podemos de una forma mas sencilla escribir y leer hacia un archivo desde nuestro codigo.


Saludos, y espero que sea de utilidad

domingo, mayo 18, 2008

Codigo Util para Java I - Impresion en Pantalla y Lectura del Teclado

Cuando empezamos en java no tenemos ni la menor idea de por donde empezar; en otros programas como Pascal o C y C++, imprimir algo en pantalla es muy fácil, al igual que leer algo del teclado para guardarlo en una variable para utilizarlo después, pero java tiene tantas cosas y tan lejanas una de la otra, que las tareas mas sencillas se vuelven tediosas; así que, aquí traigo una serie de posts con código útil y básico, para iniciar en java.

  • Imprimir en Pantalla realmente es muy sencillo, pero si es algo largo de escribir:

System.out.println("Hola Mundo");


Pero aunque sea algo redundante, podemos hacer la nuestra propia, encapsulando el método:


public void imprimir(Object o){
System.out.println(o);
}


Le mandamos un objeto para que tenga la funcionalidad misma del método original de imprimir cualquier cosa que se le envié.

imprimir("Hola a todos!");


  • Lectura del Teclado Ahora, leer del teclado si es más complicado, pero podemos encapsular la serie de lineas en un solo método para simplificarlo




import java.io.*;
public String leer(String msg){
System.out.print(msg);
try{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader FlujoE = new BufferedReader(isr);
str = FlujoE.readLine();
}
catch(IOException e){
System.err.println("Errors:" + e.getMessage());
}
return str;
}




Este método al ser llamado, se detiene a esperar los caracteres del teclado, y termina al ser presionado ENTER o INTRO también en windows (hay linux que no lo interpretan igual) y luego le da formato y lo convierte en String

Para cada proyecto entonces tendríamos que copiar los métodos, igual seria molesto, entonces mejor tenerla en una clase aparte, y llamarla naturalmente desde cada uno de nuestros proyectos, con la diferencia que la clase seria Static, lo que quiere decir que no tenemos que hacerle un new() (crearle memoria o crear una instancia de la clase) para poder ejecutarla, por lo que es mucho mas útil. así tendríamos lo siguiente:


Nombre del Archivo: ES.java


import java.io.*;

public class ES{
static String str = "";
public ES(){
}
public static String leer(String msg){
System.out.print(msg);
try{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader FlujoE = new BufferedReader(isr);
str = FlujoE.readLine();
}
catch(IOException e){
System.err.println("Errors:" + e.getMessage());
}
return str;
}
public static void imprimir(Object o){
System.out.println(o);
}


}





Para llamarlo haríamos como sigue desde cualquier método main() de java para probarlo:





String loQueEscribi = ES.leer("Digite su mensaje despues de aqui: ");
ES.imprimir("Ud escribio esto: " + loQueEscribi );




Saludos y espero que sea de utilidad

sábado, mayo 17, 2008

Codigo Util para Flash

Cuando se trabaja en flash (especialmente as2) puede ser muy confuso saber que se puede llegar a la misma solución por varios caminos, hay cosas que parece que no tienen ninguna utilidad, por eso voy a hacer referencia a algunas cosas de esas que parece que no la tienen, con ejemplos que si lo son:

  • MovieClips como Arrays Cada que creamos un movieClip y dentro de este creamos otro, en flash se maneja como si fuera un array de movieClips, asi que ud sin saber cuantos hay dentro de este, o sus nombres, puede hacer referencia a ellos de la siguiente manera:

  for (item_mc in gran_mc) {
gran_mc.item_mc.gotoAndStop("mi_label");
}
  • Crear e Insertar Propiedades y Funciones Personalizadas Si bien podemos hacer clases en as2 y ponerle nuestras propiedades y metodos, no podemos modificar la clase movieClip, pero para cada instancia de movieClip podemos insertarle "al aire" funciones y propiedades que nos pueden servir si a una variedad de objetos duplicados tienen la misma propiedad o accion:


my_mc.id = 0
my_mc.my_function = function(){
trace("accion de la funcion")
}
//asi se llama a la funcion
my_mc.my_function();
  • Referenciando a un Botón dentro de sí mismo Muchas veces para manejar un gran numero de botones al mismo tiempo, con iguales acciones y comportamiento, lo que hago es insertarlos en un array, y lo recorro y le asigno las acciones por un for, pero tenia el problema que no podía referenciar directamente al botón porque al terminar el ciclo, la variable muere, y el valor que queda para el contador es el ultimo, entonces al referenciar el array con la variable, solo me señalaba el ultimo botón, así que para no perder la referencia de sí mismo en el botón, solo llamo a this, y el botón se llama a si mismo sin pasar por el array y todo solucionado:



var botones:Array = new Array();
for(var k=0; k < botones.length; k++){
botones[k].id = k;
botones[k].onPress = function(){
trace(this); //nombre real
trace(botones[k]); //nombre perdido por valor de k
trace(this.id); //id real
trace(k); //id perdido
}
}



espero sea de utilidad

lunes, mayo 05, 2008

Creaktif -- Flash Review

Bueno primero para decirles que voy a estar aqui, haciendo reviews de paginas webs en especial paginas diseñadas en flash, y tambien algunas aplicaciones..
asi que aqui va el primer review de Nitos..



Porque escogi esta pagina? Bueno ya que me gusta lo diferente, lo arriesgado, osea NO lo tradicional escogi esta pagina web para hacerle un review..

Pagina: Creaktif
Screenshot:



Lo Bueno: El diseño es totalmente revolucionario, nunca en la vida habia visto una pagina tan diferente de las demas!, gracias a este diseño siempre te vas a querer quedar por mas tiempo.
Las pequeñas animaciones, como cuando abre una de esas ventanas, estan muy bien elaboradas.

Lo malo: Esta muy bonita la pagina, pero si el usuario no tiene mucho tiempo, ni vera la pagina ya que dura algo en cargar.. :S

Concuerdo con ustedes??

domingo, mayo 04, 2008

Bordeando la Seguridad en Flash - Leyendo XML

Por motivos de seguridad el flash solo permite leer archivos alojados en su propio dominio, así que si ud pretende leer desde un flash alojado en www.midominio.com, un feed en www.miotrodominio.com, ud no podrá contactarse con el servidor porque el flash no lo permite.

Ahora, una forma sencilla de pegarse de un servicio de feed, como uno que nos dé las noticias, es creando un archivo de servidor que lea el contenido de ese feed, y devuelva exactamente lo mismo, pero con la diferencia que estará en nuestro dominio.

Entonces que tienes que hacer?


Crear un PHP o un ASPX que por dentro lea el XML, y lo imprima sin mas,
y nosotros llamamos a nuestro .php/.aspx y cargamos el contenido


Aqui por ejemplo este PHP que tiene muy pocas lineas y es demasiado útil:


leerArchivo.php

if(isset($HTTP_GET_VARS['ruta'])){
$filename = $ruta;
//header("Content-type: text/xml");
readfile ($filename);
}
?>

Dejo comentado la linea del header, porque lo que hace es ponerle al XML
una nueva tag de header que arruinaría el plan de leer el XML como ya lo planeamos,
sin embargo la dejo por si necesitan poner otro tipo de header a su XML o feed.

Al momento de llamarlo en nuestro dominio seria algo de este estilo:

http://www.midominio.com/leerArchivo.php?ruta=www.miotrodominio.com/feed.xml

esto devolvería el mismo contenido del XML que está en otro dominio, pero bajo el nuestro,
haciendo válida la seguridad del flash.

domingo, abril 20, 2008

Papervision 3D - Flash 3D


Para los que estamos interesados en el 3d de alguna forma, y en las aplicaciones web en flash, el ver sin fin de paginas que ya aplican el 3d dentro del flash no es una novedad; pero para aquellos que quieren hacer algo así en pocos pasos resultará ser algo increible, algo que traerá fascinación a quienes quieran intentar tocar la 3era dimensión.


Ahora entonces ya no tendrán que diseñar sitios web pensando en las acciones de los botones que pueden ver, sino tendrán que hacerlo pensando en un punto en el espacio, un botón te llevará a una coordenada, haciendo a un lado el resto del contenido y menús, y llevándote a una nueva perspectiva, cambiando de ángulos para que lo puedas experimentar de una forma, que no puedes en el X y Y.

Ahora este pequeño tutorial sobre las capacidades de papervision 3d, la colección de librerías que explotan flash en la tercera dimensión; pertenece a la versión 1 de papervision, la cual puede ser mas sencilla para los principiantes, la versión 2 tiene grandes cambios e inclusión de gran cantidad de librerías así como el cambio de nombres de objetos; si pueden realizar este, pueden continuar con el segundo.

Tutorial en video en gotoAndLearn.com

aquí mismo pueden descargar el material del tutorial si tienen prisa por ver el código terminado.

sábado, marzo 08, 2008

Menu Flash con XML y FlashVars

Recientemente para mi trabajo he tenido que hacer parametrizables muchos de los flash que realizo día con día por motivos de ineficiencia.

Así por ejemplo, realizaba un menú según me lo piden, digamos con 4 links de texto, cada botón por dentro tiene la función de as2 getURL() con un string dentro que seria la url a la pagina ASPX que tiene que desarrollarse


mi_btn.onPress = function(){
getURL("mi_pagina.aspx")
}

entonces yo programaba todos los botones de esta manera esperando a que en el momento de desarrollarse la pagina, realmente se llamara "mi_pagina.aspx". En ciertas ocasiones, era cierto, pero en otras, se mandaba a realizar una modificación muy grande en la pagina, por lo que requeria otro nombre por que la anterior se guardaba como respaldo, entonces me enviaban de nuevo el flash, para hacer una modificación tan pequeña, que realmente no requería mi mano; pero asi era.

Ser programador significa automatizar procesos, yo también digo que nos motiva la vagancia de no estar haciendo lo mismo, pero en todo caso esto funciona.


Asi que idee lo siguiente, tomando en cuenta que se puede pasar parámetros desde el html hacia el flash, pensé que se pueden mandar los links de los botones del flash por parámetro, y así no tener que recompilar si hay un cambio en el link.

Pero en lugar de mandar n parámetros a un flash, solo mandamos uno, y por dentro dividimos los links y los asignamos a cada boton del flash:

"http://google.com|http://yahoo.es"

aqui tenemos este string con dos urls separadas por el caracter or "|", por dentro del flash lo separaremos con el método de string split() que nos dará un array con cada url por separado

param value="id=http://google.com|http://yahoo.es" name="FlashVars"

id sera una variable que podremos usar dentro del AS del flash como si fuera una variable que hubiéramos declarado dentro.

y como AS2 permite hacer cosas que no permite otro lenguaje podemos hacer esto:

id = id.split("|")

asi id se le asignará un array resultado de dividir a si mismo en fracciones, y podremos usar a id desde id[0] hasta id[id.length-1], recorriendo un FOR esto es sencillo, y así sabiendo dentro de nuestro flash cuantos botones tenemos asignamos a cada uno de acuerdo al indice de estos el valor del string que se paso por FlashVars.

Cuando los datos son masivos, o provenientes de una base de datos, entonces usar FlashVars resulta poco practico, aunque no imposible, pero lo usaremos de otra manera. En lugar de pasar por flash vars los links, pasamos la ruta de un XML al que conozcamos su estructura, lo recorremos de forma adecuada y, aprovechando que es un XML, podemos no solo mandar los links, sino los labels de cada botón, así nuestro menu seria completamente dinámico. Como ejemplo les muestro este menú que desarrolle en mi trabajo que lee un XML y que por flashvars recibe la url de donde se encuentra este XML










el flash pueden descargarlo aqui, y el xml de ejemplo aqui.

En el jscript que provee adobe con el nombre de AC_RunActiveContent.js, para pasar flashvar simplemente se agrega un parámetro mas al final de todos los que ya se encuentra recibiendo este método

'flashvars', 'id=menu_dinamico.xml'


El swf solo lee hasta un segundo nivel de nodos de xml


Menu SWF con XML
XML con la estructura que necesita el flash

sábado, febrero 23, 2008

BENDITO MACHINE 1 y 2

Para las personas que les gusta la animación un tanto freaky, les traigo un par que vi ya hace un buen rato, que provocan un sentimiento extraño en quien lo ve, ya que no es algo con lo que trates todos los días; ademas la animación vectorial es admirable y merece atención.

BENDITO MACHINE



BENDITO MACHINE 2

sábado, enero 05, 2008

Tutorial Flash para Hacer Botones

Una de las cosas más básicas que puedes realizar en flash es crear un boton para obtener navegabilidad en tus animaciones, pero antes de programar uno se tiene que realizar!

Si bien ya hay flash que traen unos botones predeterminados, en ocasiones necesitaremos realizar nuestros propios botones con formas irregulares o no convencionales, para esto, un video muy sencillo de tutoriales.es






tutoriales.es

videoturoriales en youtube