Нужно посредством ActionScript 2, реализовать метод загрузки нескольких фоток и поочередного их показа. Т.е. сперва загрузить и показать фото1, затем через 5 секунд показать фото2 и т.д. по циклу.
Я решил реализовать это через классы.
За основу взял пример Мука с ImageViewer
#####ImageViewer.as######
Код:
class ImageViewer {
private var container_mc:MovieClip;
private var target_mc:MovieClip;
private var containerDepth:Number;
private static var imageDepth:Number = 0;
private static var maskDepth:Number = 1;
private static var borderDepth:Number = 2;
private static var statusDepth:Number = 3;
private var borderThickness:Number;
private var borderColor:Number;
private var imageLoader:MovieClipLoader;
public function ImageViewer (target:MovieClip,
depth:Number,
x:Number,
y:Number,
w:Number,
h:Number,
borderThickness:Number,
borderColor:Number) {
target_mc = target;
containerDepth = depth;
this.borderThickness = borderThickness;
this.borderColor = borderColor;
imageLoader = new MovieClipLoader();
imageLoader.addListener(this);
buildViewer(x, y, w, h);
}
private function buildViewer (x:Number,
y:Number,
w:Number,
h:Number):Void {
createMainContainer(x, y);
createImageClip();
createImageClipMask(w, h);
createBorder(w, h);
}
private function createMainContainer (x:Number, y:Number):Void {
container_mc = target_mc.createEmptyMovieClip("container_mc" + containerDepth, containerDepth);
container_mc._x = x;
container_mc._y = y;
}
private function createImageClip ():Void {
container_mc.createEmptyMovieClip("image_mc", imageDepth);
}
private function createImageClipMask (w:Number,
h:Number):Void {
if (!(w > 0 && h > 0)) {
return;
}
container_mc.createEmptyMovieClip("mask_mc", maskDepth);
container_mc.mask_mc.moveTo(0, 0);
container_mc.mask_mc.beginFill(0x0000FF); // Use blue for debugging.
container_mc.mask_mc.lineTo(w, 0);
container_mc.mask_mc.lineTo(w, h);
container_mc.mask_mc.lineTo(0, h);
container_mc.mask_mc.lineTo(0, 0);
container_mc.mask_mc.endFill();
container_mc.mask_mc._visible = false;
}
private function createBorder (w:Number,
h:Number):Void {
// Only create the border if a valid width and height are specified.
if (!(w > 0 && h > 0)) {
return;
}
container_mc.createEmptyMovieClip("border_mc", borderDepth);
container_mc.border_mc.lineStyle(borderThickness, borderColor);
container_mc.border_mc.moveTo(0, 0);
container_mc.border_mc.lineTo(w, 0);
container_mc.border_mc.lineTo(w, h);
container_mc.border_mc.lineTo(0, h);
container_mc.border_mc.lineTo(0, 0);
}
public function loadImage (URL:String):Void {
imageLoader.loadClip(URL, container_mc.image_mc);
container_mc.createTextField("loadStatus_txt", statusDepth, 0, 0, 0, 0);
container_mc.loadStatus_txt.background = true;
container_mc.loadStatus_txt.border = true;
container_mc.loadStatus_txt.setNewTextFormat(new TextFormat(
"Arial, Helvetica, _sans",
10, borderColor, false,
false, false, null, null,
"right"));
container_mc.loadStatus_txt.autoSize = "left";
container_mc.loadStatus_txt._y = 3;
container_mc.loadStatus_txt._x = 3;
container_mc.loadStatus_txt.text = "LOADING";
}
public function onLoadProgress (target:MovieClip,
bytesLoaded:Number,
bytesTotal:Number):Void {
container_mc.loadStatus_txt.text = "LOADING: "
+ Math.floor(bytesLoaded / 1024)
+ "/" + Math.floor(bytesTotal / 1024) + " KB";
}
public function onLoadInit (target:MovieClip):Void {
container_mc.loadStatus_txt.removeTextField();
container_mc.image_mc.setMask(container_mc.mask_mc);
}
public function onLoadError (target:MovieClip, errorCode:String):Void {
if (errorCode == "URLNotFound") {
container_mc.loadStatus_txt.text = "ERROR: File not found.";
} else if (errorCode == "LoadNeverCompleted") {
container_mc.loadStatus_txt.text = "ERROR: Load failed.";
} else {
container_mc.loadStatus_txt.text = "Load error: " + errorCode;
}
}
public function destroy ():Void {
imageLoader.removeListener(this);
container_mc.removeMovieClip();
}
}
А в самом кадре вызываем этот класс:
Код:
var viewer:ImageViewer = new ImageViewer(this, 1, 100, 100, 250, 250, 10, 0xCE9A3C);
viewer.loadImage("picture.jpg");
loadmsg_txt.removeTextField();
Многое из методов тут лишнее (бордеры, позиция) - это я потом уберу.
А вот как теперь в этот класс добавить новый метод по смене картинок и задержке между ними?
Например, надо писать в кадре свойство ни с одним значение, а массив картинок.
А как дальше? если можно пример - экшнскрипт я тока учю.