Cristalab

Creación de un downloader en ActionScript 3

Por: Carloz.Yanez + 22.07.2007

Un downloader es un programa que descarga archivos, sin importar el nombre de la extensión que uno le dé.

En este tip aprenderemos cómo crear uno en Actionscript 3.

Comenzaremos creando la Clase "Downloader":

Código :



package Classes
{

//Importamos los paquetes necesarios
import flash.events.*;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.net.FileFilter;

public class Downloader
{
private var fileToDownload:URLRequest;//El archivo a descargar
private var fileReference:FileReference;//Este objeto se encarga de la descarga

public function downloadFile(input:String):void //Donde "input" es el archivo a descargar
{
fileToDownload = new URLRequest();
fileToDownload.url = input;
fileReference = new FileReference();
configureHandlers(fileReference);
fileReference.download(fileToDownload);
}

//Configuramos los Listeners que se encargaran de determinado suceso
private function configureHandlers(dispatcher:IEventDispatcher):void
{
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
}

private function completeHandler(event:Event):void
{
trace("Complete" + event);
}

private function ioErrorHandler(event:IOErrorEvent):void
{
trace("Error" + event);
}

private function progressHandler(event:Event):void
{
trace("Progress" + event);
}
}
}



Luego creamos una interface que contenga un boton de descarga llamado "dl" y un campo de texto de entrada llamado "inputField" y lo convertimos todo a un solo MC llamado "main".

Creamos un archivo .as con nombre "AS3Downloader.as" y colocamos el siguiente código:

Código :



import Classes.Downloader;

var file:Downloader = new Downloader();//Creamos un objeto Downloader

function catchEnter(event:KeyboardEvent):void//Checamos si se presiona enter
{
if(event.keyCode == Keyboard.ENTER)
{
file.downloadFile(main.inputField.text);//Donde inputField es el campo de texto donde escribimos el archivo que queremos descargar
}
}

stage.addEventListener(KeyboardEvent.KEY_DOWN, catchEnter);

function catchButton(event:MouseEvent):void//O si se presiona el botón
{
file.downloadFile(main.inputField.text);
}

main.dl.addEventListener(MouseEvent.CLICK, catchButton);



Con esto terminamos todo el código.

Recuerden que Flash maneja http y https, por lo que todas las url's que escribamos tendrán que empezar con "http://" o "https://", además de que deberán modificar la configuracion del Flash Player para que el swf pueda acceder a internet.

Aquí el ejemplo:


Ejemplo: "http://www.adobe.com/index.html"

Etiquetas flash actionscript_3

Comentarios | Enviar un comentario
Interesante, vamos a probar
Por: eveevans
Igual es porque el ejemplo no es funcional, no lo se; la cuestión es que me apareció esto:


Triste
Por: Bleend
Fuck, vale, es culpa mía, pensé que el campo ese blanco era la barra de progreso, no que tenias que poner la URL. (owned)

De todas formas, si no hay link, deberías deshabilitar el botón, ¿no?
Por: Bleend
Sorpresa esta muy bueno....Pero al igual que Bleend, pense que era una barra de progreso en donde se coloca el URL....
Muy buen tip Thumbs up
Por: psycho-vnz
Yo intente bajar un archivo ZIP y me marco este error.

Error #2044: SecurityErrorEvent no controlado: text=Error #2048: Violación de la seguridad Sandbox: http://www.cristalab.com/images/tips/actionscript_3/downloader/AS3Downloader.swf no puede cargar datos desde http://21creativos.com/21CreativosPortafolio.zip.
at Classes::Downloader/downloadFile()
at AS3Downloader_fla::MainTimeline/catchButton()
Por: Pablo_blog

carloz.yanez :


Recuerden que Flash maneja http y https, por lo que todas las url's que escribamos tendrán que empezar con "http://" o "https://", además de que deberán modificar la configuracion del Flash Player para que el swf pueda acceder a internet.


En el tip se dice que hay que escribir una URL, no coloque una barra de progreso porque el ejemplo es solo para probar que realmente descargue archivos, por lo que lo más recomendable es que se descarguen archivos pequeños.

Que extraño, a mi ni el Botón ni Enter me funcionan si no hay URL.

Pablo_Blog, cambiaste la configuración de seguridad en Flash Player?

Cualquier otro problema favor de postearlo, Gracias. Sonrisa
Por: Carloz.Yanez

Código :

private function configureHandlers(dispatcher:IEventDispatcher)


algo no esta muy pulido por aqui......... sera esa Interface? saludos
Por: bipsa
como cambiar la configuracion del flash player para qeu me pueda mandar a una direccion internet por favor
Por: ravicho_blog
Muy buen tip...pero una duda en el fotograma no lleva AS? y se lleva cual es?
Por: Jose_blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.