ActionScript - PROBLEMA CON PRELOADER EN FLASH CS3

 
Vista:

PROBLEMA CON PRELOADER EN FLASH CS3

Publicado por Mako (1 intervención) el 03/11/2009 23:25:07
Buenas noches, el problema es el siguiente...
Tengo un preloader externo que carga otro swf. Lo que pasa es que cuando va 30% aproximadamente del preloader la otra pelicula comienza a reproducirse y cuando desaparece el preloader la pelicula ya va por la mitad de su reproduccion...
(Ver: http://www.fernandokuyumchoglu.com.ar) Alli esta todo subido...

El codigo del preloader es el siguiente

var l:Loader = new Loader();
var mc:MovieClip = loading;
var mcc:MovieClip = efecto;
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, done);

function loop(e:ProgressEvent):void
{
var perc:Number = e.bytesLoaded / e.bytesTotal;
percent.text = Math.ceil(perc*100).toString()+"%";
}

function done(e:Event):void
{
removeChildAt(0);
percent = null;
this.removeChild(mc);
this.removeChild(mcc);
addChild(l);
l.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, loop);
l.contentLoaderInfo.removeEventListener(Event.COMPLETE, done);
}
l.load(new URLRequest("presentacion.swf"));
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

Control de reproducción del SWF cargado en un preloader

Publicado por Alejandro (369 intervenciones) el 26/06/2023 22:21:16
El problema que estás experimentando se debe a que la película cargada comienza a reproducirse antes de que se complete la carga total del preloader. Para solucionarlo, puedes hacer uso del evento `Event.ENTER_FRAME` para verificar el progreso de carga y controlar la reproducción del SWF cargado.

Aquí tienes una posible solución para corregir el problema:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
var l:Loader = new Loader();
var mc:MovieClip = loading;
var mcc:MovieClip = efecto;
var loaded:Boolean = false; // Variable para controlar si la carga está completa
var loadedFrames:int = 0; // Variable para almacenar los frames cargados
var totalFrames:int = 0; // Variable para almacenar el total de frames del SWF cargado
 
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
 
function loop(e:ProgressEvent):void
{
    var perc:Number = e.bytesLoaded / e.bytesTotal;
    percent.text = Math.ceil(perc * 100).toString() + "%";
 
    // Calcula el número total de frames del SWF cargado
    totalFrames = l.contentLoaderInfo.framesLoaded;
 
    // Comprueba si se ha cargado al menos el 30% del SWF
    if (!loaded && perc >= 0.3) {
        loaded = true;
        // Detiene la reproducción del SWF cargado
        l.content["stop"]();
    }
}
 
function done(e:Event):void
{
    removeChildAt(0);
    percent = null;
    this.removeChild(mc);
    this.removeChild(mcc);
    addChild(l);
    l.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, loop);
    l.contentLoaderInfo.removeEventListener(Event.COMPLETE, done);
}
 
l.load(new URLRequest("presentacion.swf"));
 
addEventListener(Event.ENTER_FRAME, checkProgress);
 
function checkProgress(e:Event):void {
    // Verifica si se ha cargado completamente el SWF
    if (loaded && loadedFrames >= totalFrames) {
        // Reanuda la reproducción del SWF cargado
        l.content["play"]();
        removeEventListener(Event.ENTER_FRAME, checkProgress);
    } else {
        loadedFrames = l.contentLoaderInfo.currentFrame;
    }
}

En esta solución, se agregó un evento `Event.ENTER_FRAME` que verifica constantemente si se ha cargado al menos el 30% del SWF y detiene su reproducción utilizando el método `stop()`. Luego, se utiliza otro evento `Event.ENTER_FRAME` para verificar si se ha cargado completamente el SWF y, en ese caso, se reanuda su reproducción utilizando el método `play()`.

Espero que esta solución te ayude a controlar la reproducción del SWF cargado en tu preloader y asegurarte de que no comience antes de que se complete la carga total. ¡Buena suerte!
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