Salve a tutti, vorrei un' amimazione ,costituita da dei cerchietti posizionati in modo casuale,per far alternare delle immagini, sono riuscita a far comparire le immagini ma non riesco a creare una dissolvenza, nel senso che quando carico la nuova immagine quella vecchia scompare io invece vorrei che restasse sulla stage fino a chè limmagine non è completamente caricata.
ecco il mio codice xml:
e il codice as3:Codice PHP:<slideshow speed="2">
<image url="images/01.jpg" />
<image url="images/02.jpg" />
<image url="images/03.jpg" />
<image url="images/04.jpg" />
</slideshow>
mi sapete dire dove sbaglio?Codice PHP:var my_speed:Number;
var my_total:Number;
var my_xmlList:XMLList;
/*counter*/
var my_playback_counter:Number = 0;
/*creo i contenitori*/
var my_slideshow:Sprite = new Sprite();
var maskContainer:Sprite = new Sprite();
var my_image_slides:Sprite = new Sprite();
var my_preloaders:Sprite = new Sprite();
maskContainer.cacheAsBitmap=true;
my_image_slides.cacheAsBitmap=true;
var my_timer:Timer;
/*carico l'xml*/
var my_xml_loader:URLLoader = new URLLoader();
my_xml_loader.load(new URLRequest("slideshow-data.xml"));
my_xml_loader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void {
var my_xml:XML = new XML(e.target.data);
my_speed=my_xml.@SPEED;
my_xmlList=my_xml.IMAGE;
my_total=my_xmlList.length();
my_xml_loader.removeEventListener(Event.COMPLETE, processXML);
my_xml_loader = null;
createContainer();
callImages(0);
my_timer = new Timer(my_speed*2000);
my_timer.addEventListener(TimerEvent.TIMER, timerListener);
my_timer.start();
}
function createContainer():void {
addChild(my_slideshow);
my_slideshow.x=0;
my_slideshow.addChild(my_image_slides);
my_image_slides.x = 0;
my_slideshow.addChild(my_preloaders);
}
function callImages(num:int):void {
my_image_slides.addChild(maskContainer);
var timer:Timer=new Timer(40,10);
timer.addEventListener(TimerEvent.TIMER, timerEvent);
timer.start();
var my_url:String = my_xmlList[num].@URL;
var my_loader = new Loader();
my_loader.load(new URLRequest(my_url));
my_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
var preloader_pb:ProgressBar = new ProgressBar();
preloader_pb.source = my_loader.contentLoaderInfo;
preloader_pb.x = my_loader.x;
preloader_pb.y = stage.stageHeight-preloader_pb.height;
preloader_pb.width =stage.stageWidth;
my_preloaders.addChild(preloader_pb);
preloader_pb.addEventListener(Event.COMPLETE, donePb);
}
function imageLoaded(e:Event):void {
var my_image:Loader = Loader(e.target.loader);
my_image_slides.addChild(my_image);
my_image.cacheAsBitmap=true;
my_image.mask = maskContainer;
}
function donePb(e:Event):void {
var my_pb:ProgressBar = ProgressBar(e.target);
my_preloaders.removeChild(my_pb);
}
function timerListener(e:TimerEvent):void {
removeMaskShape();
my_playback_counter++;
if (my_playback_counter == my_total) {
my_playback_counter =0;
}
callImages(my_playback_counter);
}
function hidePrev():void {
var my_image:Loader=Loader(my_image_slides.getChildAt(0));
my_image_slides.removeChild(my_image);
}
/*----Gestisco la maschera----*/
function timerEvent(e:TimerEvent):void {
var maskShape:MaskShape = new MaskShape();
maskShape.scaleX = 0;
maskShape.scaleY = 0;
maskShape.x = Math.random() * stage.stageWidth;
maskShape.y = Math.random() * stage.stageHeight;
maskContainer.addChild(maskShape);
maskShape.alpha=0;
maskShape.addEventListener(Event.ENTER_FRAME, animateMaskShape);
}
function animateMaskShape(e:Event):void {
e.target.scaleX += 0.05;
e.target.scaleY += 0.05;
e.target.alpha +=0.01;
}
function removeMaskShape():void {
var count:uint = maskContainer.numChildren;
//trace(count);
for (var i:uint=0; i<count; i++) {
maskContainer.removeChildAt(0);
}
//hidePrev();
}
Creazie
Ciao

Rispondi quotando