Antes y después
El lengueja de programación de la Plataforma Flash ha pasado por 3 versiones: ActionScript 1, ActionScript, 2 y ActionScript 3. Como sabemos, varias cuestiones han cambiado en el paso de AS2 a AS3. La carga de archivos externos es una de ellas. Si bien la traducción literal es más o menos sencilla, vale la pena repasarla.
Lo que en AS2 solíamos hacer así:
loadMovie("archivo_secundario.swf", this);
En AS3 se debe hacer así (el ejemplo citado a continuación está copiado de la documentación de Adobe, y luego ligeramente modificado):
import flash.display.*;
import flash.net.URLRequest;
var cargador:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("archivo_secundario.swf");
cargador.load(urlReq);
this.addChild(cargador);
Más allá de lo que se puede ver a golpe de vista, hay un par de cuestiones interesantes que trataré de sacar a la luz en este post.
El ejemplo de Adobe:
Antes de crear nuestro propio ejemplo —seguramente más complejo— repasaremos lo que hicieron los muchachos de Adobe. El ejemplo original se incluye en la documentación de la clase Loader (encargada de la carga de archivos externos en AS3).
Se importan las clases necesarias para la realización de la carga de un archivo externo. Nosotros lo haremos de forma detallada cuando nos toque crear nuestro propio ejemplo. Adobe ha sido un poco vago al importar todas las clases del paquete flash.display sin mayores precisiones (como podrán ver ustedes mismos, ésta no es una práctica muy amigable ya que el paquete flash.display contiene numerosas clases que no están siendo utilizadas por el resto del código).
// importar las clases necesarias: import flash.display.*; import flash.net.URLRequest;
Se crea una instancia de la clase Loader, que hará las veces de cargador. Este tipo de objeto (que hereda de la clase DisplayObjectContainer) tiene la funcionalidad necesaria para realizar la carga.
// crear el cargador: var cargador:Loader = new Loader();
Se prepara una instancia de URLRequest, el tipo de objeto que espera recibir el método load de la clase Loader.
// preparar la URL request:
var urlReq:URLRequest = new URLRequest("archivo_secundario.swf");
Efectivamente se da la orden de carga por medio de la función load, incluyendo como parámetro a aquel objeto de tipo URLRequest que creamos anteriormente.
// se da la orden de carga: cargador.load(urlReq);
Hasta aquí, la carga del archivo externo ya se puso en marcha, pero aún queda agregarlo a la escena. La siguiente línea de código agrega al cargador (de tipo Loader) a la escena, como child del root. Siendo que los objetos de clase Loader heredan de DisplayObjectContainer, tienen la posibilidad de agregarse a la Display List, al igual que un MovieClip o un Sprite.
// poner el cargador en escena: this.addChild(cargador);
Recordemos el código completo, comentado:
// importar las clases necesarias:
import flash.display.*;
import flash.net.URLRequest;
// crear el cargador:
var cargador:Loader = new Loader();
// preparar la URL request:
var urlReq:URLRequest = new URLRequest("archivo_secundario.swf");
// dar la orden de carga:
cargador.load(urlReq);
// poner el cargador en escena:
this.addChild(cargador);
A primera vista, parece mucho más complejo que la escueta versión en AS2 (y lo es), pero en programación menos no siempre es más. El cambio a AS3 nos facilita la resolución de errores y la generación de diferentes funcionalidades. El código nuevo ganó en complejidad, pero también en coherencia, orientación a objetos, facilidad en la solución de errores y funcionalidad.
Veremos un poco más a fondo el asunto en la siguiente página…



El diseño no es una cuestión estética
El otro día me junté a comer locro con un viejo amigo mío —uno que en algún momento supo jugar al poliladron en los pasillos de nuestra escuela primaria, y que el presente lo encuentra abogado— y no sé cómo terminamos hablando de diseño. Noté en aquel momento que debía hacer una brevísima introducción explicándole qué es (como si tal cosa fuese posible), y comencé diciendo que “el diseño no es una cuestión estética”.
Continué contándole por qué el diseño es función, materiales, técnica, y varios etcéteras que ahora no vienen al caso. Lo que sí nos importa, es que a la mañana siguiente me desperté un tanto inquieto pensando no sólo por qué demonios había dicho eso, sino además cómo fue que eso había aparecido con tanta naturalidad en mi discurso, como un terrible lapsus freudiano favorecido por el vino que acompañaba al riquísimo locro picante de El Sanjuanino.
Cuando tuve tiempo para analizar el asunto entendí que al decir aquello, lo hice desde el lugar de diseñador moderno (utilizo aquí la palabra “moderno” no como sinónimo de novedoso, nuevo, etc., sino refiriéndome a la ideología o movimiento específico dentro de la historia del diseño). A nivel formal, el diseño moderno basó su revolución en la búsqueda de la pureza y la no arbitrariedad: la forma debía seguir la función. En este sentido, el diseñador industrial Dieter Rams escribió una serie de máximas para el buen diseño que listo a continuación:
Sipt, uno de los ítems de la lista dice que el buen diseño es estético. Pero vale la pena aclarar que lo dice en tanto que:
La calidad estética de un producto es parte integral de su utilidad ya que los productos que utilizamos diariamente afectan a nuestra persona y nuestro bienestar; pero sólo los objetos bien ejecutados pueden ser hermosos. (fuente)
Es decir que el diseño moderno le daba importancia a la cuestión estética sólo en tanto y en cuanto consideraba al bienestar del usuario como una de las funciones del objeto, y lo estético como medio para satisfacer esa necesidad.
Cuando desaparece el valor estético en sí mismo, y se pierde la posibilidad de la arbitrariedad en la forma, todo pasa a depender de la dimensión funcional del objeto: incluyendo su forma.
Dándole aún más vueltas al asunto, comprendí que cuando dije “el diseño no es una cuestión estética”, lo que estaba significando, en definitiva, era que el diseño no es arte. Claro, en lindo brete me metí. Si la Estética es la raíz filosófica encargada de pensar el terreno de lo bello y lo feo, pues entonces es la encargada de pensar el arte; si el diseño no es de interés estético —es decir, si no se relaciona con lo bello y lo feo—, es de interés utilitario: su importancia radica en lo útil o inútil de su producción.
Sin embargo, al pensar al diseño como en el terreno de lo útil únicamente algo hace ruido… verdad? Sí, sé que al decir esto sufriré el ataque de una horda de zombies modernos, pero creo que prefiero correr el riesgo. Después de todo, el diseño es, también, una cuestión estética.