Ciao a tutti
ho questo problema..
ho realizzato questa classe che effettua uno slideshow di immagini caricate dinamicamente da un file xml. Sullo stage non c'è nulla creato manualmente, viene tutto richiamato da codice.
Il problema è che se provo a far visualizzare un qualsiasi oggetto, tipo un logo, (vedi nel codice new Tween(logo_mc,"alpha",Strong.easeOut,100,1,5,true) ) sopra le immagini, queste mi vanno sempre in primo piano e non riesco a trovare il modo di portarlo sopra.
Riporto il codice di seguito:
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
var my_speed:Number;
var my_total:Number;
var my_images:XMLList;
var my_loaders_array:Array = [];
var my_success_counter:Number = 0;
var my_playback_counter:Number = 0;
var my_slideshow:Sprite = new Sprite();
var my_image_slides:Sprite = new Sprite();
var my_preloader:TextField;
var my_timer:Timer;
var my_prev_tween:Tween;
var my_tweens_array:Array = [];
logo_mc.alpha = 0;
var my_xml_loader:URLLoader = new URLLoader();
my_xml_loader.load(new URLRequest("home.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_images=my_xml.IMAGE;
my_total=my_images.length();
loadImages();
my_xml_loader.removeEventListener(Event.COMPLETE, processXML);
my_xml_loader = null;
}
function loadImages():void
{
for (var i:Number = 0; i < my_total; i++)
{
var my_url:String = my_images[i].@URL;
var my_loader:Loader = new Loader();
my_loader.load(new URLRequest(my_url));
my_loader.contentLoaderInfo.addEventListener(Event .COMPLETE, onComplete);
my_loaders_array.push(my_loader);
}
my_preloader = new TextField();
my_preloader.text="CARICAMENTO...";
my_preloader.textColor = 0xcccccc;
my_preloader.x = (stage.stageWidth - my_preloader.width)/2;
my_preloader.y = (stage.stageHeight - my_preloader.height)/2;
addChild(my_preloader);
}
function onComplete(e:Event):void
{
my_success_counter++;
if (my_success_counter == my_total)
{
startShow();
}
new Tween(logo_mc,"alpha",Strong.easeOut,100,1,5,true) ;
var my_loaderInfo:LoaderInfo = LoaderInfo(e.target);
my_loaderInfo.removeEventListener(Event.COMPLETE, onComplete);
}
function startShow():void
{
removeChild(my_preloader);
my_preloader = null;
addChild(my_slideshow);
my_slideshow.addChild(my_image_slides);
nextImage();
my_timer = new Timer(my_speed*1000);
my_timer.addEventListener(TimerEvent.TIMER, timerListener);
my_timer.start();
}
function randomNumber(low:Number=NaN, high:Number=NaN):Number
{
var low:Number = low;
var high:Number = high;
if(isNaN(low))
{
throw new Error("low must be defined");
}
if(isNaN(high))
{
throw new Error("high must be defined");
}
return Math.round(Math.random() * (high - low)) + low;
}
function nextImage():void
{
var my_image:Loader = Loader(my_loaders_array[my_playback_counter]);
my_image_slides.addChild(my_image);
my_image.x = (stage.stageWidth - my_image.width)/2;
my_image.y = (stage.stageHeight - my_image.height)/2;
//trace(my_image.x);
//trace(my_image.y);
my_tweens_array[0] = new Tween(my_image,"alpha",Strong.easeOut,0,1,5,true);
my_tweens_array[0] = new Tween(my_image,"x",None.easeNone,randomNumber(15,-150),randomNumber(15,-150),20,true);
my_tweens_array[0] = new Tween(my_image,"y",None.easeNone,randomNumber(15,-150),randomNumber(15,-470),20,true);
}
function timerListener (e:TimerEvent):void
{
hidePrev();
my_playback_counter++;
if (my_playback_counter == my_total)
{
my_playback_counter =0;
}
nextImage();
}
function hidePrev():void
{
var my_image:Loader=Loader(my_image_slides.getChildAt( 0));
my_prev_tween = new Tween(my_image,"alpha",Strong.easeOut,1,0,1,true);
my_prev_tween.addEventListener(TweenEvent.MOTION_F INISH, onFadeOut)
}
function onFadeOut(e:TweenEvent):void
{
my_image_slides.removeChildAt(0);
}
Dove sbaglio? o meglio, c'è un modo per riuscire a portare qualsiasi tipo di oggetto sopra le immagini caricate?
grazie anticipatamente

Rispondi quotando