A ver si alguien me ayuda porque con AS3 a veces me atasco en tonterias.
Pretendo subir una imagen al un servidor. Para ello é usado la clase FileReference siguiendo un ejemplo sacado de internet. En este ejemplo el código estaba dentro del .fla y el resultado de las funciones ("cargando", "error...", "imagen cargada", ...) los mostraba en un campo de texto colocado en el escenario.
Yo quiero hacer lo mismo pero colocando el código en una clase.
Mi pregunta es esta, usando esta clase:
Código ActionScript :
package clases{
//Clases necesarias
import flash.events.*;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.URLRequest;
public class subirImagen {
private var uploadURL:URLRequest;
private var archivo:FileReference;
//Función llamada al pulsar examinar, se crea el filereference y se abre el navegador de archivos
public function subirImagen():void {
uploadURL = new URLRequest();
uploadURL.url = "uploadFile.php";
archivo = new FileReference();
ponerListeners(archivo);
archivo.browse(getTypes());
}
//Añado los listener al objeto filereference
private function ponerListeners(dispatcher:IEventDispatcher) {
dispatcher.addEventListener(Event.CANCEL, cancelHandler);
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(Event.SELECT, selectHandler);
dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler);
}
//Con está función se generan los tipos de archivos que estarán disponibles para seleccionar desde el navegador
private function getTypes():Array {
var allTypes:Array = new Array(getImageTypeFilter(), getTextTypeFilter());
return allTypes;
}
//Tipos de imágenes admitidos, tanto para pc como para mac
private function getImageTypeFilter():FileFilter {
return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg;*.jpeg;*.gif;*.png");
}
//Tipos de archivos de texto admitidos, para pc y mac
private function getTextTypeFilter():FileFilter {
return new FileFilter("Text Files (*.txt, *.rtf)","*.txt;*.rtf");
}
//Se distribuye cuando se cancela la descarga desde el navegador de archivos.
private function cancelHandler(event:Event):void {
trace("Subida cancelada.");
}
//Se distribuye cuando se finaliza la descarga o la carga
private function completeHandler(event:Event):void {
trace("Subida completada.");
}
//Se reciben datos del servidor tras completar la carga
private function uploadCompleteDataHandler(event:Event):void {
trace("Subida confirmada por el servidor.");
}
//Se produce cuando falla la carga y hay un código http de error.
//Por ejemplo si no se encuentra el PHP, se generará un error 404.
private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("Se ha producido el siguiente error: " + event.status);
}
//Se produce cuando falla la carga o descarga
private function ioErrorHandler(event:IOErrorEvent):void {
trace(event.text);
}
//Se inicia la carga o descarga
private function openHandler(event:Event):void {
trace("Comienza la subida");
}
//Se distribuye periodicamente durante la carga o la descarga, mostrando el progreso de la misma.
private function progressHandler(event:ProgressEvent):void {
var file:FileReference = FileReference(event.target);
trace(event.bytesLoaded + " bytes de " + event.bytesTotal + " bytes subidos.");
}
//Se distribuye al intentar descargar o cargar un archivo de un servidor fuera del entorno de seguridad de la película
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("El servidor no permitió la carga del archivo.");
}
//Se distribuye al elegir el archivo para carga o descarga desde el navegador de archivos.
function selectHandler(event:Event):void {
//donde.text = "";
var archivo:FileReference = FileReference(event.target);
trace("Archivo elegido: " + archivo.name + "Tamaño = " + archivo.size + " bytes.");
if (archivo.size > 2000000) {
trace("No se pueden subir archivos de más de 2000 KB.");
} else {
archivo.upload(uploadURL);
}
}
}
}A la que llamo desde el .fla así:
Código ActionScript :
import clases.subirImagen;
function buscarImagen(event:MouseEvent) {
var subir:subirImagen = new subirImagen();
}
examinar.addEventListener(MouseEvent.CLICK,buscarImagen);¿Cómo hago para que lo que ahora mismo muestro en los "trace" se muestre en un campo de texto colocado en el escenario?
