"Matar" un Loader(); (AS3)
3 seguidores
Buenas!
Pues dando le vueltas por google no encontré solución para "matar"/detener un Loader().
El codigo que tengo viene a ser algo como:
<code>var elLoader:Loader = new Loader();
var ruta:String = "http://www.paginawebcool.net/";
var url:String=ruta+mytempFoto[num][0];
var urlReq:URLRequest = new URLRequest(url);
elLoader.load(urlReq);
/*
cargo progesivamente fotos.
Una vez que termine una cargo otra y por ahí va...todo ok.
Claro puedo interromper la función pero la ultima carga seguirá cargando por lo que me gustaría deternerla. Con CLOSE no me va...
*/</code>
Salud++
dourado
tpmmds
Hola:
Flex te permite verlo. Imagino que buscas algun programita freeware. Ah, y siempre tienes la opción, en Windows de Abrir el Administrador de tareas y ver la pestaña de la red, aunque esto es un poco "a ver si te pillo cuando paras" ;-).
Un saludo.
Trabajo con mac y flex no lo tengo... quizas ya me toca de una vez por todas instalarlo...
Salud++
tpmmds
Hola:
Flex te permite verlo. Imagino que buscas algun programita freeware. Ah, y siempre tienes la opción, en Windows de Abrir el Administrador de tareas y ver la pestaña de la red, aunque esto es un poco "a ver si te pillo cuando paras" ;-).
Un saludo.
dourado
tpmmds
Hola:
Prueba a monitorizar la red a ver si realmente para o no para. Puede que sea que la simulación de descarga de Flash "no se entere" de la cancelación. Lo estuve haciendo con Flex y creo recordar que funcionaba, y la descarga se cancelaba al momento.
Un saludo.
Pues estoy buscando algun programa para monitorizar el navegador...
Alguien sabe de alguno (mac) o firexfox friendly... :D ?
Salud++
tpmmds
Hola:
Prueba a monitorizar la red a ver si realmente para o no para. Puede que sea que la simulación de descarga de Flash "no se entere" de la cancelación. Lo estuve haciendo con Flex y creo recordar que funcionaba, y la descarga se cancelaba al momento.
Un saludo.
dourado
Buenas tpmmds!
Pues aún no lo he logrado... Con los listeners no hay problema en detenerlos, cuando hago simulate dowload dentro de flash aún me siguen saliendo carga de archivos, se puede ver que por detraz aún carga el archivo.. o sea no se corta...
http://www.jorgedourado.com/domestika/explicaLoader1.jpg
Comico fue buscar en google por Evente.UNLOAD y aajjajaaj sale esté Post como primero en la busqueda..."ke tamo famosos" :D
Pues intenté de varias formas y nada la página funciona bien aunque era un detalle para mejorar el "performance" en relación a la conexión de la ADSL..
GraciaS++
tpmmds
Hola:
Si lo que quieres es que el usuario detenga la descar ga, por ejemplo, pulsando la tecla espacio, el método a utilizar es unload(), como has dicho antes. Te defines una variable flag, que estará en true mientras se realiza la descarga, y que se pone en false si durante ésta, el usuario pulsa "espacio":
<code>
var cargando:Boolean = true;
var imagen:Bitmap;
stage.AddEventListener(KeyboardEvent.KEY_UP, KeyUp);
var loader:Loader = new Loader();
loader.load(new URLRequest(rutaImagen));
loader.contentLoaderInfo:addEventListener(ProgressEvent.PROGRESS, onProgress, false, 0, true);
loader.contentLoaderInfo:addEventListener(Event.COMPLETE, on
Complete, false, 0, true);
loader.contentLoaderInfo:addEventListener(Event.UNLOAD, onProgress, false, 0, true);
function onProgress(evt:ProgressEvent):void {
if (!cargando) {
resetCarga();
loader.unload();
}
}
function onComplete(evt:Event):void {
imagen = evt.target.content as Bitmap;
addChild(imagen)
}
function onUnload(evt:Event):void {
trace("el usuario ha cancelado la descarga")
resetCarga();
loader.contentLoaderInfo.removeEventListener(Event.UNLOAD, onUnload);
}
function resetCarga():void {
cargando = false;
loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress);
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete);
}
function KeyUp(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.SPACE) cargando = false;
}
</code>
Un saludo, y revisa el código por si va alguna errata.
dourado
Hola tpmmds :)
El problema no es cargar la imagen, el objetivo es suspender la carga, el loader, libertar el servidor de esa tarea, del archivo que has llamado. O sea parar/detener un loader mientras se procesa.
En el caso del video podemos parar el stream, con loader.close(); y parar la petición al servidor lo mismo busco para un jpg/png/swf...
Por cierto también le puedes hacer loader.clear();
Como dices y bien el dispose() y el removeChild libertamos simplesmente el player y la memoria pero quiero actuar antes de todo eso(no sé si me explico bien).
Gracias :)
Un salud++
tpmmds
Hola:
No sé si he comprendido el problema. Para cargar una imagen con un loader y enterarte cuándo acaba de cargarse:
<code>
var bitmap:Bitmap;
contenedorImagenes.addChild(bitmap);
var ruta = ""; //aquí va la ruta de la imagen
var loader:Loader = new Loader();
loader.load(new URLRequest(ruta));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteImagen);
function onCompleteImagen(evt:Event):void {
bitmap= evt.target.content as Bitmap;
}
</code>
cuando quieras descargar la imagen símplemente haz un
bitmap.bitmapData.dispose();
contenedor.removeChild(bitmap);
bitmap = null;
Y no quedará ni el más mínimo rastro de la imagen ;-).
Bueeeeno, vale, de acuerdo, no quedará hasta que Flash player lance el garbage collector.
Por cierto, una cosa que puede despistar cuando se cargan recursos (tanto con AS2 como con AS3). El recurso cargado, en este caso una imagen, es SÓLO UNO. Si como hemos hecho, se lo "pasamos" a bitmap, deja de estar en el loader. El recurso se "mueve", no se copia. Lo digo porque es frecuente querer cargar una imagen, un icono, etc, y querer instanciarlo varias veces (esto último se puede hacer clonando el bitmap).
Un saludo.
dourado
BuenAS!
Le he dado muchas vueltas!
Para la aplicación necesitaba detener la carga de uns jpg´s grandes pero también video. El video resulta más facil de borrar/parar la carga, digamos el stream.
Para el caso del jpg aunque no me haya solucionado el problema, para dejar la aplicación lo más fluida posible hice los isguientes pasos:
elLoader.unload(); elLoader.close(); removeChild(elLoader);
Aparte de eso también no está mal remover los listeners, ayudan a "tranquilizar" el player pero no solucionan el problema.
La petición de ese archivo al servidor una vez que empieza no encontré solución para detenerlo...
GraciAS
Salud++
grafismo
Mira posible solución al final del mensaje:
Loader.close() method won't stop a progress
http://www.kirupa.com/forum/archive/index.php/t-263498.html
saludos
dourado
trace("nadie???... :-( );
Salud++