He creado un cargador de fotos aleatorio, tomando datos de un xml y presentando las fotos con un efecto de fade-in/fade-out usando el tween con alpha para ello.

En la mayoría de las ocasiones funciona perfectamente, pero en otras la foto se queda cargada a medias (a media opacidad), o a veces no carga la siguiente. ¿Es algún error común del tween de flash, o algún problema con el navegador?

Dejo aquí el código, por si acaso:

Código :

import flash.net.*;
import flash.events.*;
import fl.transitions.*;
import fl.transitions.easing.*;

cargando.visible = false;
cuanto.visible = false;

var cargaLista:URLLoader = new URLLoader (new URLRequest("imgs_inst.xml"));
cargaLista.addEventListener(Event.COMPLETE, datosLista);
var cargador:Loader = new Loader();

function datosLista(e:Event):void
{
   var datosXML:XML = XML (cargaLista.data);
   var numeroFotos:Number = datosXML.imagen.length();
   var fotoAleatoria:String = datosXML.imagen[Math.floor(numeroFotos*Math.random())].toString();
   var solicitud:URLRequest = new URLRequest(fotoAleatoria);
   
   cargador.load(solicitud);
   ponerListener(cargador.contentLoaderInfo);
   cargaLista.removeEventListener(Event.COMPLETE, datosLista);
}

function ponerListener (dispatcher:IEventDispatcher):void
{
   dispatcher.addEventListener(ProgressEvent.PROGRESS, cargaProgreso);
   dispatcher.addEventListener(Event.COMPLETE, cargaCompleta);
}

function cargaProgreso (e:ProgressEvent):void
{
   cargando.visible=true;
   cuanto.visible = true;
   
   var cargado:int = e.bytesLoaded;
   var total:int = e.bytesTotal;
   var porcentaje:int = cargado/total*100;
   cuanto.text = String(porcentaje)+"%";
}

function cargaCompleta (e:Event):void
{
   cargador.x = 231-cargador.width/2;
   st.addChild(cargador);
   st.mask = mascara;
   cargando.visible=false;
   cuanto.visible = false;
   var aparece:Tween = new Tween (st, "alpha", Strong.easeOut, 0, 1, 4, true);
   aparece.addEventListener(TweenEvent.MOTION_FINISH, desvanecer);
}

function desvanecer (e:Event):void
{
   var desaparece:Tween = new Tween (st, "alpha", Strong.easeOut, 1, 0, 1, true);
   desaparece.addEventListener(TweenEvent.MOTION_FINISH, datosLista);
}