|
-
XML banner. Help needed for timer
Hello Everyone. So i want to create an xml banner, but every picture to have her own timer, defined in the xml. for example i want my first picture to disappear after 5 seconds, the 2nd after 3 sec, the 3rd after 2 sec etc.
my xml looks like this one:
Code:
<?xml version="1.0" encoding="utf-8"?>
<slide DELAY="2">
<image URL="images/1.jpg" DESCRIPTION="Lorem " DELAY="5"/>
<image URL="images/2.jpg" DESCRIPTION="Nam blandit" DELAY="2"/>
<image URL="images/3.jpg" DESCRIPTION="Cras" DELAY="3"/>
<image URL="images/4.jpg" DESCRIPTION="Nulla sed" DELAY="10"/>
<image URL="images/5.jpg" DESCRIPTION="Vivamus." DELAY="1"/>
</slide>
The action script code looks like this:
Code:
import fl.transitions.Tween;
import fl.transitions.easing.*;
var _delay:int = 0;
var _total:int = 0;
var _images:XMLList = null;
var _loaders:Array = new Array();
var _counter:int = 0;
var _next:int = 0;
var _timer:Timer = null;
var _tween:Tween = null;
var _container:Sprite = new Sprite();
var _text:TextField = new TextField();
var _loader:URLLoader = new URLLoader();
_loader.load(new URLRequest("data.xml"));
_loader.addEventListener(Event.COMPLETE, Complete, false, 0, true);
function Complete(e:Event):void
{
var _xml:XML = new XML(e.target.data);
_loader.removeEventListener(Event.COMPLETE, Complete);
_loader = null;
_images = _xml.image;
_total= _images.length();
LoadImages();
}
function LoadImages():void
{
for (var i:int = 0; i < _total; i++)
{
_delay = _images[i].@DELAY;
trace(_delay)
var _url:String = _images[i].@URL;
var _loader:Loader = new Loader();
_loader.load(new URLRequest(_url));
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ImageLoaded);
_loaders.push(_loader);
}
}
function ImageLoaded(e:Event):void
{
_counter++;
if ( _counter == _total)
{
SetupSlider();
}
}
function SetupSlider():void
{
addChild(_container);
_text.selectable=false;
_text.width = 450;
_text.height = 50;
_text.x = 0;
_text.y = 0;
addChild(_text);
NextImage();
_timer = new Timer(_delay*1000,0);
_timer.addEventListener(TimerEvent.TIMER, TimerListener);
_timer.start();
}
function TimerListener(e:TimerEvent):void
{
_next++;
if (_next == _total)
{
_next =0;
}
NextImage();
}
function NextImage():void
{
if(_container.numChildren>0)
{
_container.removeChildAt(0);
}
_loaders[_next].alpha = 0;
_container.addChildAt(_loaders[_next],0);
_tween = new Tween(_loaders[_next],"alpha",Strong.easeOut,0,1,1,true);
_text.text = _images[_next].@DESCRIPTION;
}
i defined in the xml file the delays for every picture, but i can figure out how to transmit the delays to the timer. please help me. thanks a lot.
-
Code:
import fl.transitions.Tween;
import fl.transitions.easing.*;
var _delay:int=0;
var _total:int=0;
var _images:XMLList=null;
var _loaders:Array = new Array();
var _counter:int=0;
var _next:int=0;
var _timer:Timer=null;
var _tween:Tween=null;
var _container:Sprite = new Sprite();
var _text:TextField = new TextField();
var _loader:URLLoader = new URLLoader();
_loader.load(new URLRequest("data.xml"));
_loader.addEventListener(Event.COMPLETE, Complete, false, 0, true);
function Complete(e:Event):void {
var _xml:XML=new XML(e.target.data);
_loader.removeEventListener(Event.COMPLETE, Complete);
_loader=null;
_images=_xml.image;
_total=_images.length();
LoadImages();
}
function LoadImages():void {
for (var i:int = 0; i < _total; i++) {
var _url:String=_images[i].@URL;
var _loader:Loader = new Loader();
_loader.load(new URLRequest(_url));
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ImageLoaded);
_loaders.push(_loader);
}
}
function ImageLoaded(e:Event):void {
_counter++;
if (_counter==_total) {
SetupSlider();
}
}
function SetupSlider():void {
addChild(_container);
_text.selectable=false;
_text.width=450;
_text.height=50;
_text.x=0;
_text.y=0;
addChild(_text);
NextImage();
}
function TimerListener(e:TimerEvent):void {
_next++;
if (_next==_total) {
_next=0;
}
NextImage();
}
function NextImage():void {
if (_container.numChildren>0) {
_container.removeChildAt(0);
}
_loaders[_next].alpha=0;
_container.addChildAt(_loaders[_next],0);
_tween=new Tween(_loaders[_next],"alpha",Strong.easeOut,0,1,1,true);
_text.text=_images[_next].@DESCRIPTION;
_delay=_images[_next].@DELAY;
trace(_delay)
_timer=new Timer(_delay*1000,1);
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, TimerListener, false, 0 ,true);
_timer.start();
}
-
hey. it worked. thanks a lot. if i can help you someday please mail me at [email protected]. cheers mate
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|