ActionScript - Cancelar carga de imagenes

 
Vista:

Cancelar carga de imagenes

Publicado por Carlos (1 intervención) el 17/04/2008 10:35:43
El problema es que estoy generando una especie de visor, y si mientras se cargan las 20 miniaturas pinchas en una que ya se ve, no me hace el cambio de pagina hasta que no se han visualizado las 19 restantes.

Al hacer clic en una de las imagenes quiero cancelar la carga del resto de imagenes, por ejemplo haciendo un break en el for.
Sin embargo, las imagenes no me las muestra hasta que no finaliza el for.

createEmptyMovieClip("mc", 300);
for (i=0; i<5; i++)
{
mc.attachMovie("fotos", "fotos"+i, i);

mc["fotos"+i].createEmptyMovieClip("contiene",0);

mc["fotos"+i].contiene.loadMovie(_root.img+ img);

}

Tengo entendido que el navegador tiene un limite de cargas, que por lo general es 4, entonces al cargar 30 imagenes estas se ponen en una cola de espera, cuando tu haces click en una miniatura esta se pone en la posicion numero 31 para ser cargada.

¿Como puedo resolver esto?

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cancelar carga de imágenes al hacer clic en una miniatura

Publicado por Alejandro (369 intervenciones) el 23/06/2023 23:29:23
Para resolver el problema de cancelar la carga de las imágenes restantes al hacer clic en una miniatura, puedes utilizar el método `unloadMovie()` para detener la carga de una imagen en particular. Sin embargo, ten en cuenta que el método `unloadMovie()` solo está disponible a partir de ActionScript 2.0, por lo que debes asegurarte de que estás utilizando esa versión.

Aquí tienes una posible solución para tu caso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var numTotalImagenes:Number = 5;
var cargaEnProgreso:Boolean = true;
 
function cargarImagenes():Void {
    var numImagenesCargadas:Number = 0;
 
    for (var i:Number = 0; i < numTotalImagenes; i++) {
        if (!cargaEnProgreso) {
            break;
        }
 
        var mc:MovieClip = mc.attachMovie("fotos", "fotos" + i, i);
        mc.createEmptyMovieClip("contiene", 0);
        mc.contiene.loadMovie(_root.img + img);
 
        // Evento para comprobar si la imagen se ha cargado completamente
        mc.contiene.onLoad = function(success:Boolean):Void {
            numImagenesCargadas++;
            if (numImagenesCargadas == numTotalImagenes) {
                // Todas las imágenes se han cargado completamente
                cargaEnProgreso = false;
            }
        };
    }
}
 
function cancelarCarga():Void {
    cargaEnProgreso = false;
 
    for (var i:Number = 0; i < numTotalImagenes; i++) {
        var mc:MovieClip = mc["fotos" + i];
        mc.contiene.unloadMovie();
        mc.removeMovieClip();
    }
}
 
// Llamada a la función para cargar las imágenes
cargarImagenes();

En este código, hemos agregado una variable `cargaEnProgreso` que se establece inicialmente en `true`. Durante el bucle de carga de las imágenes, se verifica esta variable en cada iteración. Si se establece en `false`, se rompe el bucle y se cancela la carga de las imágenes restantes.

La función `cancelarCarga()` se utiliza para establecer `cargaEnProgreso` en `false` y luego utiliza el método `unloadMovie()` para detener la carga de cada imagen en proceso. También se elimina el correspondiente `MovieClip` del escenario.

Recuerda que es importante tener en cuenta las versiones de ActionScript y Flash que estás utilizando, ya que algunos métodos pueden variar entre versiones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar