Я надеюсь, что кто-то там может пролить свет на пару проблем, которые у меня возникают со слайд-шоу изображений
Я работал над простым слайд-шоу для проекта, и все шло отлично / как и ожидалось до тех пор, пока я не создал функцию, чтобы скрыть предыдущие изображения перед отображением следующего. На первом проходе все, кажется, работает нормально; как только слайд-шоу начинается снова, изображения не отображаются, но когда он загружает следующее изображение, он воспроизводит анимацию из функции «скрыть предыдущую», которая кратко показывает изображение перед тем, как исчезнуть. Таким образом, по сути, дисплей пуст, затем таймер вызывает следующий слайд, и его изображение быстро исчезает, а затем снова становится пустым.
Другая проблема, с которой я сталкиваюсь, заключается в том, что текст, который я загружаю из XML, похоже, не хочет вставлять или выгружать, как они должны.
Вот код:
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
var filePath:String = "photo1.xml";
var iArray:Array = new Array();
var titleArray:Array = new Array();
var dateArray:Array = new Array();
var catArray:Array = new Array();
var descArray:Array = new Array();
var rotationSpeed:Number;
var totalImages:Number;
var dataList:XMLList;
var imagesLoaded:Number = 0;
var currImage:Number = 0;
var rotationTimer:Timer;
var oldTween:Tween;
var imageContainer:Sprite = new Sprite();
var imageHolder:Sprite = new Sprite();
var titleContainer:Sprite = new Sprite();
var dateContainer:Sprite = new Sprite();
var catContainer:Sprite = new Sprite();
var descContainer:Sprite = new Sprite();
var theMask:Sprite = new Sprite();
theMask.graphics.beginFill(0x000000);
theMask.graphics.drawRect(114, 25, 323, 332);
addChild(theMask);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(filePath));
function onComplete (evt:Event):void{
var pigData:XML = new XML(evt.target.data);
pigData.ignoreWhitespace;
dataList = pigData.pic;
totalImages = dataList.length();
rotationSpeed = pigData.@speed * 1000;
stage.scaleMode = StageScaleMode.NO_SCALE;
loadImages();
rotationTimer = new Timer(rotationSpeed);
rotationTimer.addEventListener(TimerEvent.TIMER, rotateImage);
rotationTimer.start();
}
function loadImages() {
for (var i:Number = 0; i < totalImages; i++) {
var imageURL:String = dataList[i].big;
var imageLoader:Loader = new Loader();
imageLoader.load(new URLRequest(imageURL));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
iArray.push(imageLoader);
var titleField:TextField = new TextField();
var dateField:TextField = new TextField();
var catField:TextField = new TextField();
var descField:TextField = new TextField();
titleField.text = dataList[i].title;
titleField.autoSize = TextFieldAutoSize.LEFT;
titleArray.push(titleField);
dateField.text = dataList[i].date;
dateField.autoSize = TextFieldAutoSize.LEFT;
dateArray.push(dateField);
catField.text = dataList[i].category;
catField.autoSize = TextFieldAutoSize.LEFT;
catArray.push(catField);
descField.text = dataList[i].description;
descField.autoSize = TextFieldAutoSize.LEFT;
descArray.push(descField);
}
}
function imageLoaded(evt:Event):void {
imagesLoaded++;
if (imagesLoaded == totalImages) {
showImage();
}
}
function showImage():void {
addChild(imageContainer);
imageContainer.addChild(imageHolder);
imageContainer.addChild(titleContainer);
imageContainer.addChild(dateContainer);
imageContainer.addChild(catContainer);
imageContainer.addChild(descContainer);
changeImage();
}
function changeImage():void {
var currentImage:Loader = Loader(iArray[currImage]);
imageHolder.addChild(currentImage);
currentImage.x = (stage.stageWidth - currentImage.width)/2;
currentImage.y = (imageHolder.height - currentImage.height)/2;
imageHolder.mask = theMask;
new Tween(imageHolder, "alpha", Regular.easeOut, 0, 1, 1, true);
var titleField:TextField = TextField(titleArray[currImage]);
titleContainer.addChild(titleField);
titleField.x = 107;
titleField.y = 365;
var titleTween:Tween = new Tween(titleField, "alpha", Regular.easeOut, 0, 1, 1, true);
var dateField:TextField = TextField(dateArray[currImage]);
dateContainer.addChild(dateField);
dateField.x = 107;
dateField.y = 375;
var dateTween:Tween = new Tween(dateField, "alpha", Regular.easeOut, 0, 1, 1, true);
var catField:TextField = TextField(catArray[currImage]);
catContainer.addChild(catField);
catField.x = 107;
catField.y = 385;
var catTween:Tween = new Tween(catField, "alpha", Regular.easeOut, 0, 1, 1, true);
var descField:TextField = TextField(descArray[currImage]);
descContainer.addChild(descField);
descField.x = 107;
descField.y = 395;
var descTween:Tween = new Tween(descField, "alpha", Regular.easeOut, 0, 1, 1, true);
}
function rotateImage(evt:TimerEvent) {
hidePrev();
currImage++;
if (currImage == totalImages) {
currImage = 0;
}
changeImage();
}
function hidePrev():void{
var oldImage:Loader = Loader(imageHolder.getChildAt(0));
oldTween = new Tween(oldImage,"alpha", Regular.easeOut, 1, 0, 1, true);
oldTween.addEventListener(TweenEvent.MOTION_FINISH, onFadeOut)
var oldTitle:TextField = TextField(titleContainer.getChildAt(0));
var oldTitleTween:Tween = new Tween(oldTitle,"alpha", Regular.easeOut, 1, 0, 1, true);
var oldDate:TextField = TextField(dateContainer.getChildAt(0));
var oldDateTween:Tween = new Tween(oldDate,"alpha",Regular.easeOut,1,0,1,true);
var oldCat:TextField = TextField(catContainer.getChildAt(0));
var oldCatTween:Tween = new Tween(oldCat,"alpha",Regular.easeOut,1,0,1,true);
var oldDesc:TextField = TextField(descContainer.getChildAt(0));
var oldDescTween:Tween = new Tween(oldDesc,"alpha",Regular.easeOut,1,0,1,true);
}
function onFadeOut(evt:TweenEvent):void{
imageHolder.removeChildAt(0);
titleContainer.removeChildAt(0);
dateContainer.removeChildAt(0);
catContainer.removeChildAt(0);
descContainer.removeChildAt(0);
}
У меня нет флеш-свистка, в большинстве случаев ставки можно выяснить, анализируя код или копаясь в Интернете; однако, это поставило меня в тупик.
Любая помощь будет очень признательна, и я благодарю вас всех заранее.