среда, 3 марта 2010 г.

Динамическое слайдшоу + ActionScript 3 + XML

В данном примере создается простое динамическое слайдшоу на ActionScript 3, используя FlashDevelop.
Адреса картинок подгружаются из XML.

Создаем новый AS3 Project.
В папке bin создаем папку images и в нее помещаем изображения 01.jpg, 02.jpg, 03.jpg.

В папке bin cоздаем новый XML-файл: LoadingData.xml.
<?xml version="1.0" encoding="utf-8" ?>
<images>
<image>01.jpg</image>
<image>02.jpg</image>
<image>03.jpg</image>
</images>


loadXml() - загрузка XML
xmlLoaded() - обработка загруженного XML и запуск слайдшоу
switchImage() - загрузка изображения


package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import caurina.transitions.Tweener;
import flash.display.Loader;
import flash.events.TimerEvent;
import flash.utils.Timer;

public class Main extends Sprite
{
private var imgPath:String = "images/";
private var currentImage:int=0;
private var imageLoader:Loader;
private var imageBitmap:Bitmap;
private var imageBitmapData:BitmapData;
private var imageTimer:Timer;
private var imageTween:Tweener;
private var dataXML:XML;




public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
loadXml();
}

private function loadXml():void {
var xmlURL:URLRequest = new URLRequest("LoadingData.xml");
var xmlLoader:URLLoader = new URLLoader(xmlURL);
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
}

private function xmlLoaded(event:Event):void {
dataXML = XML(event.target.data);
currentImage = dataXML.images.image.length()-1;
imageLoader = new Loader();
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
this.addChild(imageLoader);
imageBitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
imageBitmap = new Bitmap();
this.addChild(imageBitmap);
switchImage(new TimerEvent(TimerEvent.TIMER));
imageTimer = new Timer(6000);
imageTimer.addEventListener(TimerEvent.TIMER, switchImage);
imageTimer.start();
}

private function switchImage(e:TimerEvent):void {
imageBitmapData.draw(this);
imageBitmap.bitmapData = imageBitmapData;
imageBitmap.alpha = 1;
if (currentImage < dataXML.frames.frame.length() - 1) {
currentImage++;
}else {
currentImage = 0;
}

imageLoader.load(new URLRequest(imgPath + dataXML.images.image[currentImage]));

}

private function imageLoaded(e:Event):void {
Tweener.addTween (imageBitmap, { alpha:0,time:2 }); 
}
}

}

Комментариев нет:

Отправить комментарий