Categories
Eventos Flash Series

Concurso – 25 líneas de ActionScript

Feliz año a todos, con esto de las fiestas y las vacaciones no he podido estar tan atento al blog y mis lecturas como me gustaría, pero he podido disfrutar de mi familia.

Los niños y yo hemos dedicado casi 5 días a organizar y volver a montar todos los legos que tenemos, además de montar los regalitos (Guarda Costas y Torre, Cartero, Casa en la playa y Excavadora) que nos trajo papá noel :-P.

Ishtar y yo hemos visto la tercera temporada de la serie The IT Crowd, terminamos de ver la segunda temporada de Eli Stone hasta donde va y empezamos a ver la primera temporada de Dexter.

Entre amigos, familia, comidas, cenas, fiestas y la magia de la navidad he estado en otra onda. Pero bueno, ahora que sintonizo nuevamente mi frecuencia habitual y quito los bloqueos para estar atento a las noticias que el mundo de Flash tiene que contar me he quedado impresionado con los resultados del concurso de 25 líneas de ActionScript que organizó Keith Peters.

El ganador ha sido Marius Heil con este juego basado en texto y el código IMPRESIONANTE que utilizó es este. Gracias a ese talento se ha hecho con una copia de la CS4 Master Collection.

Los 12 finalistas son los siguientes:

Enhorabuena a Marius y los finalistas, así como agradecimiento a todos los participantes, jurado y a Keith por organizarlo.

Espero que lo disfruten tanto como espero hacerlo yo, jejeje, ahora nos queda estudiar el código y seguir aprendiendo. Los nombres de las películas SWF han sido obra de Nacho. 😛

Saludos y que paséis felices reyes!!!

Más información:

Categories
Flash

Feather Framework y Layout Manager for Flash Lite

Los chicos (mis amigos Raúl y Marcos) de BlocketPC nos han dado un magnífico regalo de navidad y es que han liberado Feather Framework y Layout Manager un par de frameworks para desarrollo de aplicaciones con Flash Lite. Tienen muy buena pinta, además viniendo de ellos nos podemos esperar lo mejor.

Feather Framework se puede descargar desde aquí, aunque es fundamental pasarse por la web del proyecto para estar al día.

Layout Manager para acceder a la documentación, las descargas y las demos de este framework, así como estar al tanto de las novedades hay que visitar la web del proyecto.

De sus palabras tenemos:

Actualmente tenéis disponibles los archivos fuentes de los proyectos, documentación y repositorios SVN para manteneros actualizados al día. Además estamos creando tutoriales y ejemplos de uso que estarán colgados en breve.

Saludos y felices fiestas!!!

Más información:

Categories
General

P{4} – ProjekPoster de Personajes

Mi amigo Marc Palau ha sacado a la luz uno de sus fascinantes proyecto, en esta ocasión se trata de P{4} – ProjekPoster donde como él mismo dice:

Quiero hacer un megaposter de 2m x 1,30m con todos (o casi todos) los personajes historicos que se nos ocurran. Como yo estoy limitado a mi memoria, espero que gente como tu deje su grano de arena añadiendo tantos personajes como se te ocurran.

La temática no está limitada a nada, así podemos ir desde Mahatma Gandhi hasta Son gokuh, pasando por Michael Jackson o Felipe González. De momento ya hay 2343 personajes y me gustaría llegar mínimo a los 5000

Para los que quieran apoyar la iniciativa simplemente compartan la página del proyecto.

Desde aquí te doy todo mi apoyo Marc!!!

Más información:

P{4} – ProjekPoster

Categories
Flash

Adobe Flash CS4 y ActionScript 3 – Documentación en español

Ya tenemos disponible la documentación (ayuda) en español de Adobe Flash CS4 Professional.

Siempre viene bien tener a la mano los PDF porque en ocasiones como me pasa todos los días al ir y venir en cercanías, jejeje, no tenemos acceso a internet y queremos verificar algo.

Saludos y que les sea de tanta utilidad como a mi.

Entradas relacionadas:

Categories
General Php

Periódicos Digitales (Detrás de cámaras)

Hace poco participé en la fase de análisis para un proyecto de Periódicos Digitales, durante mi investigación encontré varias posibilidades, pues hoy en día es algo más que habitual que encontremos los períodicos accesibles desde Internet. Esto ha servido para que emprendedores o empresarios encontraran un gran mercado virgen y por explorar. Cada cual aporta buenas soluciones en función a las necesidades de cada cliente. Estan desde los que te ofrecen un CMS para que lo administres a tu gusto (claro con formación ;D) hasta los que hacen todo por ti partiendo de una publicación en papel.

EL MODELO DE NEGOCIO

No hay un único modelo de negocio pues en función al producto que se elija, a la periodicidad de actualización, al volumen de información, a la asistencia, a los módulos y muchos factores más varían los precios. Pero si se pueden separar en dos modelos claros, la suscripción y la licencia.

En el caso de la suscripción el cliente tendrá que pagar una cuato mensual, trimestral, semestral o anual y que suele llevar además un compromiso de permanencia (jejeje, esto me suena a operadores móviles o provedores de servicios de telecomunicación). Este modelo tiene beneficios para ambas partes, pues no requiere de una gran inversión por parte del cliente y por parte del empresario se asegura entradas periódicas.

En el caso de la licencia, este es más grande (si me refiero a costoso :P) pero tiene muchos beneficios más, pues suele ser un desarrollo más completo, con módulos avanzados que no se suelen encontrar en desarrollos lowcost. Lo veo claramente enfocado hacia un mercado o perfil de clientes más serios con publicaciones a gran escala, quiero decir de tirada nacional G R A N D E.

LAS CARACTERÍSTICAS

En general casi todos tienen las partes comunes de un periódico digital, algunos más que otros, pero aquí dependerá de las necesidades de cada uno escoger el que más se acomple en cuanto a funcionalidad, flexibilidad y demás. Las características comunes son:

  • Hemeroteca
  • RSS
  • Canales / Categorías / Secciones
  • Newsletter
  • Gestores de publicidad
  • Posicionamiento SEO
  • Galerías fotográficas y de video
  • Gestión de usuarios / perfiles / roles
  • Diseño y maquetación
  • Gestión de alojamiento y dominio

Esto es más o menos lo que ofrecen, no todos lo tienen todo, algunos tienen más y otros menos, pero en general con esto nos podemos hacer una idea de lo que hay en el mercado y creo que todavía queda mucho por hacer :D.

LO QUE HAY

Aquí expongo algunos de los productos o servicios que encontré y que estudié para ofrecer una solución a mi cliente, jejeje, dejaré para el final el resultado (si es que lo hay :P).

LO QUE SE LLEVA

Hay que hacer una revisión a los principales periódicos digitales para saber que está de moda, conocer las tendencias, las demandas de los usuarios y las iniciativas de los medios por explotar este canal. Así que algunos de los preiódicos digitales que estuve mirando para hacerme una idea de por donda van los tiros son los siguientes:

LO QUE YO HICE

Utilicé Drupal un CMS libre, me gustó porque ya lo conocía, jejeje :D, porque es muy fácil de utilizar, porque utiliza taxonomías para los contenidos, porque tiene el módulo vistas, porque tiene el módulo panels y sobre todo porque en un principio era un reto y que al cliente le pareció bien invertir en investigación para desarrollar nuestra propia aplicación.

Recordando los post que escribió Juan (Zárate) en su día sobre los frameworks (¿Ahora picar frameworks propios es malo? y Frameworks propios, parte 2), todo depende de las necesidades del cliente, de tus habilidades, del tiempo de desarrollo, de la pasta de por medio y alguna que otra cosa más. En este caso fué posible la investigación y extender (hacer) nuestro propio desarrollo.

Pues eso es todo, saludos!!!

Categories
AIR Eventos Flash General

¿Qué pasa en nomeva.com?

Durante estas tres últimas semanas han pasado muchas cosas que no he podido comentar como me gustaría. Por ejemplo en cuanto a novedades de Adobe ya tenemos oficilamente la versión de Adobe Flash CS4 para descargar y también tenemos la actualización de Adobe AIR, es decir la versión 1.5.

En cuando a eventos. Asistí a las jornadas de noviembre del GUL de la Universidad Carlos III y también a las conferenciasrails. Estos eventos me encantaron y si saco un poco de tiempo escribiré un reseña como se merecen estos eventos, pues se tocaron temas súper importantes como Python, Ruby On Rails, Frameworks Javascript, patrones, escalabilidad, startups, ideas, proyectos y mucho más. En estos tuve la oportunidad de encontrarme con viejos amigos y conocer gente nueva, con mucha energía y ganas de seguir aprendiendo, con muchísimos conocimientos y ganas de compartilos, es el caso de Obie Fernandez uno de los pilares del framework Rails.
Han pasado más eventos pero que no he podido asistir, como es el caso del congreso de webmasters o ficod o también Adobe en vivo Perú 2008.

Otra novedad en cuanto al mundo del desarrollo móvil es por parte de la gran comunidad de Cristalab y el Spanish Mobile Adobe User Group pues han creado dentro de los foros de cristalab uno especial para tratar todas los temas relacionados al desarrollo para dispositivos móviles.

En fin que han sido muchas cosas y poco tiempo para asimilarlas y compartirlas.

😀 jejeje, por cierto, otra novedad es que gracias a mi buen amigo Joan ahora tengo un MacBook, así que empieza mi incursión también por ese mundo.

Saludos.

Categories
Eventos Flash Flex

MIF OnSite III – Resumen

Hace poco publiqué en Cristalab un post sobre el resumen del evento MIF OnSite III. Para no volver a escribir aquí lo mismo simplemente lo comento por si les apetece leerlo.

Además añado algunas actualizaciones, pues los ponentes han publicado los sildes de sus charlas y algunos ejemplos:

Las fotos que hice del evento las pueden encontrar aquí.

Un cosa curiosa, un dato importante, un gran acontecimiento, o simplemente las cosas que tiene la vida, pues resulta que me encontré con Kali Romiglia, si el mismo, simplemente tenía que decirlo, jejeje, mi buen amigo Andrés Karp nos hizo una foto, aunque Kali se ha tapado la cara, jejeje, pero es él, hace tiempo también conicidimos en el Flash For México y también tengo otra foto con él.

Pero bueno, esto tuvo su parte graciosa en realidad Kali se cubría la cara por la risa que sucitó ver esto y escuchar al ponente sobre temas de control de errores en el código, es cierto, no hay errores, pero que me dicen de los warnings, jejeje, de verdad que esto es para echarse unas cuantas risas.

Saludos!!!

Entradas relacionadas:

Categories
Flash General Interactividad

El negocio de los videojuegos, casual games y redes sociales

Desde hace tiempo tenía pensado este post pero no veía el momento ni la forma de escribirlo, así que hoy me he levantado y simplemente me he puesto a escribir pues no quiero que pase más tiempo ya que estamos viviendo el momento de los videojuegos online con sus mundos virtuales y demás acompañantes.

Existiendo gente como esta con tanta pasión por lo videojuegos, algunos crecimos con la evolución de los videojuegos, otros nos vieron crecer pero también estuvieron ahí acompañándonos con los videojuegos, otros ya estaban ahí cuando llegaron los videojuegos, algunos más se apuntaron casi al final de la carrera y se engancharon fácilmente a este apasionante mundo.

La cuestión aquí es que cada vez sómos más las personas enganchadas a los videojuegos, esto quizá se lo debemos a en gran parte a nintendo gracias a revolucionar el mercado a través de sus consolas Nintendo DS y Nintendo Wii, que permitieron acercar a muchísimas más personas que antes no entraban al mundo de los videojuegos, por la facilidad con que ellos consiguieron moldear está nueva generación interactiva de videojuegos.

Hay más gente detrás de este gran negocio de los videojuegos, otro peso pesado han sido los mundos virtuales que han podido triunfar a lo grande sacándole mucho partido a internet y la conexión de grandes masas de jugadores. Ejemplos de estos podemos ver World of Warcraft, Age of Conan, The Lord of The Ring Online, Second life, muy pronto tendremos Lego Universe y bueno hay una gran lista de mundos virtuales con un flujo masivo de usuarios.

Los casual games también han ayudado en gran medida a conectar con más gente y lo siguen haciendo día a día. Con ejemplos como este vemos la capacidad de enganche que tienen los casual games. Estos también han encontrado un perfecto espacio en las redes sociales como facebook donde día a día millones de personas dedican segundos, minutos y en ocasiones horas a juegos tan sencillos y a la vez apasionantes como este.

Bueno ¿y todo esto para qué? pues para hablar la gran oportunidad que existe hoy en día de conseguir nuestro trocito de pastel y ese pastel es bastante grande y jugoso, para hacerse una idea sólo echad un vistazo a este post y también a todos los que aparecen aquí.

Para iniciarse en este mundo de los casual games multijugador no hace falta ser un experto desarrollador ni hacer una gran inversión en cuanto a servidores, pues hay varias iniciativas en internet que nos ayudan a empezar, un ejemplo es la comunidad de nonoba que nos ofrece una API para el desarrollo de juegos multi jugador y el alojamiento de los juegos, además y por si fuera poco la posibilidad ganar dinero los juegos que se desarrollen, esto a través de los premios semanales y mensuales que entregan a los juegos más visitados.

Además todas las redes sociales nos permiten crear contenidos que estarán accesibles a sus millones de usuarios a través de sus API’s, por ejemplo la API de Facebook.

Otro gran nicho, pero más que grande es enorme o gigantesco es el que la gente de Apple nos ha creado con la aparición del iPod touch y el iPhone, pues para los desarrolladores han proporcionado el iPhone SDK con el que entre muchísimas otras cosas podemos crear videojuegos.

Bueno, que son muchas, muchísimas las cosas que se desprenden de este tema. Simplemente quería escribir algo para comentarlo pues de verdad que si no hacemos algo ahora quizá mañana sea tarde.

Saludos!!!

Entradas relacionadas:

Categories
Flash JSFL Tutoriales

Tutorial JSFL – Comandos con interfaz gráfica II

Este tutorial continua la serie de tutoriales de JSFL que empecé a escribir en este post, no es el tercero sino la segunda parte del segundo tutorial de Comandos con interfaz gráfica.

En esta ocasión vamos a crear un comando que nos ayude a crear un XML con el listado de ficheros jpg que se encuentran en un directorio que indicaremos mediante un cuadro de diálogo Buscar carpeta.

En este tutorial veremos lo siguiente:

  • Interfaz gráfica basada en una película swf.
  • Uso de Función MMExecute.
  • Uso de cuadro de diálogo Buscar carpeta.
  • Introducción al objeto FLfile.

Interfaz gráfica basada en una película swf

Lo primero que debemos hacer es indicar en el fichero JSFL el uso de un xmlPanel mediante el siguiente código:

fl.getDocumentDOM().xmlPanel(fl.configURI + "panel.xml");

Lo siguiente que debemos hacer es indicar en el fichero xml de configuración de interfaz gráfica del comando el uso de una película Flash, mediante el siguiente código:

Listo, con esto ya tenemos un comando que utiliza un fichero xml para configurar su interfaz gráfica y esta interfaz muestra una película swf.

Uso de Función MMExecute

La función MMExecute sirve para ejecutar scripts JSFL desde una película swf, esto lo vamos a necesitar en este tutorial para ejecutar las siguientes acciones:

  • Aceptar
    MMExecute(‘fl.xmlui.accept();');
  • Cancelar
    MMExecute(‘fl.xmlui.cancel();');
  • Asignar valor
    MMExecute(‘fl.xmlui.set("variable", "valor");');
  • Abrir cuadro de diálogo Buscar carpeta
    MMExecute(‘fl.browseForFolderURL("Mensaje");‘);

Este código lo podemos ejecutar en eventos de botones como onClick, onRelease, etcétera desde nuestra interfaz de usuario.

La función MMExecute devuelve una cadena cuando la ejecución del script JSFL devuelve algo. NOTA importante, el resultado de MMExecute siempre será una cadena.

Uso de cuadro de diálogo Buscar Carpeta

Para abrir un cuadro de diálogo Buscar carpeta debemos ejecutar el siguiente código:

var ruta:String = fl.browseForFolderURL("Mensaje");

Este nos devolverá la ruta hasta la carpeta expresada como archivo:///URI que es el formato que utiliza JSFL para trabajar con el sistema de ficheros. Por ejemplo, en Windows para la carpeta D:\Fotos sería file:///D|/Fotos.

Introducción al objeto FLfile

El objeto FLfile nos proporciona una API de comunicación con el sistema de ficheros del sistema operativo poder crear, modificar o eliminar entre otras cosas ficheros o directorios. Este objeto lo vamos a utilizar en este tutorial para ejecutar las siguientes acciones:

  • Listar el contenido de un directorio
    FLfile.listFolder("path", "files");
  • Crear un fichero
    FLfile.write("fileURI", "contenido fichero");

El método FLfile.listFolder nos permite aplicar un filtro de búsqueda de tal forma que el resultado sólo incluya ficheros de cierto tipo, para nuestro ejemplo aplicamos el filtro de búsqueda para fichero de tipo jpg, esto lo conseguimos con el siguiente código:

FLfile.listFolder(path + "/*.jpg", "files");

Este método devuelve un array con los resultados de la búsqueda.

El método FLfile.write nos permite crear un fichero, este método devuelve un valor de tipo booleano que indica el éxito de la operación al crear el fichero. Para nuestro ejemplo utilizamos este método para crear el fichero XML con el listado de los ficheros jpg del directorio indicado mediante el cuadro de diálogo Buscar carpeta.

Listo, ahora si ya hemos hablado sobre los puntos importantes que trata este comando, sobre todo de las nuevas funciones y los nuevos métodos que utilizamos. A continuación pongo el código de de los distintas partes que componen este comando.

Fichero JSFL de nombre Crea XML de imágenes.jsfl

//Declaración de variables
var oDoc;
var oCfg;
var sDirPath;
var sNameFile;

//Llamadas al método de configuración
this.config();

/**
 * @method	config
 * Método encargado de la configuración del comando
 * @return	Void
 */
function config()
{
	//Limpiamos el panel de salida
	fl.outputPanel.clear();

	//Obtenemos las referencias al documento
	this.oDoc = fl.getDocumentDOM();
	if(this.oDoc)
	{
		//Obtenemos una referencia al objeto de configuración de la interfaz gráfica
		this.oCfg = this.oDoc.xmlPanel(fl.configURI + "Commands/XML/Crea XML de imágenes.xml");

		//Asignamos el valor de la variable del path para listar las imágenes y el nombre del fichero xml
		this.sDirPath = this.oCfg.sDirPath;
		this.sNameFile = this.oCfg.sNameFile;
	}
	else
	{
		alert("Debes tener un documento abierto.");
	}
}

//Comprobación de la respuesta del usuario sobre la ventana de introducción de datos
if ((this.oCfg) && (this.oCfg.dismiss == "accept"))
{
	this.init();
}
else
{
	//El usuario ha cancelado la operación
}

/**
 * @method	init
 * Método encargado de la inicialización del comando
 * @return	Void
 */
function init()
{
	if(this.sDirPath != "")
	{
		//Obtenemos la ruta del fichero XML y el contenido del fichero XML.
		var sXmlPath = this.getUrlXmlFile();
		var sXmlContent = this.getContentXml();

		//Creamos el fichero e informamos al usuario el resultado de la operación.
		var bSuccess = FLfile.write(sXmlPath, sXmlContent);
		if(bSuccess)
		{
			alert("Se ha creado correctamente el fichero:\n " + sXmlPath);
		}
		else
		{
			alert("No se ha podido crear el fichero:\n " + sXmlPath);
		}
	}
	else
	{
		alert("Debes seleccionar un directorio.");
	}
}

/**
 * @method	getUrlXmlFile
 * Método encargado de obtener la ruta del fichero XML que se generará, lo hace a partir del path del documento y realiza las conversiones pertinentes.
 * @return	String	Cadena con la ruta del fichero XML que se generará.
 */
function getUrlXmlFile()
{
	var ret = "";

	//A partir del path del documento abierto componemos la ruta del fichero XML que será hermano del documento abierto.
	var aTmp = this.oDoc.path.split("\\");
	aTmp.pop();
	var sUnidad = aTmp.shift();
	var aTmp2 = sUnidad.split(":");
	sUnidad = aTmp2.shift();
	ret = "file:///" + sUnidad + "|" + aTmp.join("/") + "/" + this.sNameFile;

	return ret;
}

/**
 * @method	getContentXml
 * Método encargado de obtener el contenido del XML, lo hace a través de listar el directorio configurado, filtrando por tipo de fichero jpg.
 * @return	String	Cadena con el contenido del fichero XML que se generará.
 */
function getContentXml()
{
	var ret = '';

	var aListFiles = FLfile.listFolder(this.sDirPath + "/*.jpg", "files");

	ret += '\n';
	ret += '\n';
	var nTotal = aListFiles.length;
	for (var i = 0; i < nTotal; i++)
	{
		ret += '\t\n';
	}

	ret += '\n';

	return ret;
}

Fichero XML para la interfaz gráfica de nombre Crea XML de imágenes.xml


	
	
	

Código de la película SWF de la interfaz gráfica de nombre Crea XML de imágenes.swf

import mx.utils.Delegate;

//Asignamos el Foco al botón Aceptar
Selection.setFocus(this.aceptarBTN);
//Asignamos el Tema de color Azul
_global.style.setStyle("themeColor", "haloBlue");

this.browsePathBTN.onRelease = Delegate.create(this, onClickBrowserPath);
this.aceptarBTN.addEventListener("click", this);
this.cancelarBTN.addEventListener("click", this);

/**
 * @method	onClickBrowserPath
 * Método encargado de abrir el cuadro de diálogo de selección de directorio.
 * @return	Void
 */
function onClickBrowserPath():Void
{
	var jsflCode:String = "fl.browseForFolderURL('Selecciona el directorio que deseas listar.');";
	var sDirPath:String = MMExecute(jsflCode);
	pathImagenesTI.text = (sDirPath == "null") ? pathImagenesTI.text : sDirPath;

	jsflCode = "fl.xmlui.set('sDirPath', '" + sDirPath + "');";
	MMExecute(jsflCode);
}

/**
 * @method	click
 * Método encargado de ejecutar las acciones para aceptar el comando y asignar el valor a la variable sDirPath.
 * @param	_oEvent		Object		Objeto de configuración asociada al evento click del botón.
 * @return	Void
 */
function click(_oEvent:Object):Void
{
	switch(_oEvent.target._name)
	{
		case "aceptarBTN":
			onClickAceptar(_oEvent);
			break;

		case "cancelarBTN":
			onClickCancelar(_oEvent);
			break;
	}
}

/**
 * @method	onClickAceptar
 * Método encargado de ejecutar las acciones para aceptar el comando y asignar el valor a la variable sDirPath.
 * @param	_oEvent		Object		Objeto de configuración asociada al evento click del botón.
 * @return	Void
 */
function onClickAceptar(_oEvent:Object):Void
{
	var jsflCode:String = "fl.xmlui.set('sDirPath', '" + _oEvent.target._parent.pathImagenesTI.text + "');";
	MMExecute(jsflCode);

	jsflCode = "fl.xmlui.set('sNameFile', '" + _oEvent.target._parent.nombreFicheroTI.text + "');";
	MMExecute(jsflCode);

	jsflCode = "fl.xmlui.accept();";
	MMExecute(jsflCode);
}

/**
 * @method	onClickCancelar
 * Método encargado de ejecutar las acciones para cerrar la ventana del comando.
 * @param	_oEvent		Object		Objeto de configuración asociada al evento click del botón.
 * @return	Void
 */
function onClickCancelar(_oEvent:Object):Void
{
	var jsflCode:String = "fl.xmlui.cancel();";
	MMExecute(jsflCode);
}

Los ficheros de este tutorial los pueden descargar de aquí.
Para cualquier duda, sugerencia o comentario aquí estaré atento a vuestros comentarios.

Saludos!!!

Entradas relacionadas:

Categories
Eventos

Universidad Carlos III – Jornadas Noviembre 2008

Gracias a mi buen amigo Jonay me entero de las jornadas de noviembre de la Universidad Carlos III de Madrid. En esta ocasión se abordarán temás como el software libre, javascript, python, ruby, subversion y c entre otras cosas. Las jornadas empiezan el lunes 10 y terminan el jueves 13 de noviembre, para que más gente pueda asistir serán por la tarde a partir de las 16 hrs.

Más información:

Universidad Carlos III – Jornadas Noviembre 2008

Grupo de Usuario de Linux de la Universidad Carlos III de Madrid

Entradas relacionadas:

Sobre control de versiones