getURL en AS3

Les presento cómo implementar la función global getURL en AS3, un clón de esta función para no marearse con clases del nuevo lenguaje:

function getURL(uri:String){
 
navigateToURL(new URLRequest(uri))
 
}

Incito a expandir esta función, porque también se podría pasar el “target” del enlace como parametro String. Comenten!

Adiós, Flash Player!

Adobe anunció oficialmente que dejará de dar soporte a Flash Player, plugin empleado para la mayoría de los videojuegos en línea.

Páginas como www.friv.com  dejarán de funcionar a partir del 2019, y muchos de los juegos de facebook también. Esto genera preocupación entre los programadores de ActionScript por lo siguiente:
Google Chrome dejará de ejecutar Flash completamente en 2020. Firefox anunció que desactivará por defecto el player en 2019; Microsoft Edge dejará gradualmente de dar la funcionalidad, restringiendo con el tiempo cada vez más su contenido hasta eliminarlo totalmente.

La alternativa:

La migración y la nueva era de los juegos interactivos en linea, es el objeto “canvas” de HTML5 cuya sintaxis y manejo es muy similar al ActionScript pero usando JavaScript. En experiencia personal he encontrado muy simple la migración de proyectos de un lenguaje a otro, pues el “canvas” y el “MovieClip” son de propiedades muy similares.
Bienvenido sea el ECMAScript,  estádar usado en muchos lenguajes de programación.
No todo está perdido. Hay que migrar los sitios en flash a HTML5 y JavaScript.

 

 

Como utilizar sudo sin contraseña en cualquier versión de linux

Como sabemos, Linux siempre fue considerado uno de los mejores sistemas (si no el mejor) en cuanto a seguridad. Pero en determinadas situaciones, sobre todo de desarrollo para aplicaciones en Kiosk-Mode u otro tipo, es necesario acceder como superusuario sin ingresar contraseña por cuestiones de comodidad.
De ningún modo se recomienda hacer esto en sistemas de uso hogareño o empresarial. Está orientado más que nada hacia entornos de desarrollo.

Abrir una terminal, y escribir la siguiente línea:

sudo visudo

Ahora, en el archivo abierto hay que buscar la siguiente línea:

root ALL=(ALL) ALL

E introducir ésta, sustituyendo el nombre de usuario por el tuyo:

nombre_usuario ALL=(ALL) NOPASSWD: ALL

Guradar y reiniciar. Luego ya se nos daría la posibilidad de emplear sudo sin necesidad de ingresar un password

Uso de QueueLoader para carga progresiva de archivos II – Eventos

Continuando con el uso de la librería QueueLoader, ahora veremos cómo se usan los detectores de eventos en ésta.

Recargando la clase anterior:

package {
	//importamos las clases necesarias
	import flash.display.MovieClip;
	import flash.events.Event;
	import com.hydrotik.queueloader.QueueLoaderEvent;
	import com.hydrotik.queueloader.QueueLoader;
	public class Main extends MovieClip {
		public function Main() {
			trace("hola desde constructor");
			//creamos una instancia del QueueLoader
			var _loader: QueueLoader = new QueueLoader();
			for (var s:int=1; s<5; s++) {
				//Recorremos las imagenes que estan en la carpeta "images"
				var url:String="images/"+s+".png";
				//creamos un contenedor para agregar la imagen cargada
				var container:MovieClip = new MovieClip();
				container.y = 170*(s-1);
				//hacemos addItem y le pasamos, el url a cargar, el mc donde se cargará
				_loader.addItem(url, container, {title:"Image1"});
				//y finalmente ejecutamos la cola de carga:
				_loader.execute();
				//Agregamos el contenedor al DisplayList:
				addChild(container);
				//Agregamos los detectores de eventos
				_loader.addEventListener(QueueLoaderEvent.QUEUE_START, onQueueStart);
				_loader.addEventListener(QueueLoaderEvent.ITEM_START, onItemStart);
				_loader.addEventListener(QueueLoaderEvent.ITEM_PROGRESS, onItemProgress);
				_loader.addEventListener(QueueLoaderEvent.ITEM_COMPLETE, onItemComplete);
				_loader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress);
				_loader.addEventListener(QueueLoaderEvent.QUEUE_COMPLETE, onQueueComplete);
				_loader.addEventListener(QueueLoaderEvent.ITEM_HTTP_STATUS, onHTTPError);
 
			}
			function onQueueStart(ev:QueueLoaderEvent) {
				trace("la cola de descarga ha comenzado");
			}
			function onItemStart(ev:QueueLoaderEvent) {
				trace("la descarga de un item comenzada");
			}
 
			function onItemProgress(ev:QueueLoaderEvent) {
				trace("onItemProgress");
				trace(Math.round((ev.percentage * 100)).toString() + "% Completado de un Item");
			}
			function onItemComplete(ev:QueueLoaderEvent) {
				trace("Se ha descargado correctamente un Item");
 
			}
			function onQueueProgress(ev:QueueLoaderEvent) {
				trace("onQueueProgress");
				trace(Math.round((ev.queuepercentage * 100)).toString() + "% Completado de la cola de descargas");
			}
			function onQueueComplete(ev:QueueLoaderEvent) {
				trace("Cola de descargas completa");
			}
			function onHTTPError(ev:QueueLoaderEvent) {
				trace("Error en el URL o en el server");
			}
 
		}
	}
}

Descargar el ejemplo: queueLoaderEventsSample

Uso de QueueLoader para carga progresiva de archivos

Una librería muy buena para la carga de archivos en ActionScript 3.0 es la llamada QueueLoader. Básicamente se encarga de cargar archivos de forma progresiva, uno tras otro, como en un stack o cola de precargas. En este post veremos un uso sencillo de éste, más adelante prometo dar ejemplos para manejar eventos y usos más avanzados.

Básicamente funciona así:

package {
	//importamos las clases necesarias
	import flash.display.MovieClip;
	import com.hydrotik.queueloader.QueueLoaderEvent;
	import com.hydrotik.queueloader.QueueLoader;
	public class Main extends MovieClip {
		public function Main() {
			trace("hola desde constructor");
			//creamos una instancia del QueueLoader
			var _loader: QueueLoader = new QueueLoader();
			for (var s:int=1; s<5; s++) {
				//Recorremos las imagenes que estan en la carpeta "images"
				var url:String="images/"+s+".png";
				//creamos un contenedor para agregar la imagen cargada
				var container:MovieClip = new MovieClip();
				container.y = 170*(s-1);
				//hacemos addItem y le pasamos, el url a cargar, el mc donde se cargará
				_loader.addItem(url, container, {title:"Image1"});
				//y finalmente ejecutamos la cola de carga:
				_loader.execute();
				//Agregamos el contenedor al DisplayList:
				addChild(container);
				//y listo!
			}
 
		}
	}
}

Descargar el ejemplo: SampleQueueLoader

Full Stack Developer / Tecnologías de la información y contenidos