0
我希望有人在那裏都不可能擺脫對我有圖像幻燈片AS3 XML幻燈片愁楚
我一直在一個簡單的幻燈片顯示爲一個項目有幾個問題的一些光,一切都會很大/如預期的那樣,直到我創建了一個隱藏前一個圖像的功能,然後才顯示下一個圖像在第一次通過時,一切似乎都運行良好;一旦幻燈片重新開始播放,圖像就不會顯示出來,但是當它載入下面的圖像時,它會播放隱藏前一個函數的補間,該函數會在淡出之前暫時顯示圖像。所以基本上顯示器是空白的,然後計時器在下一張幻燈片中調用,並且圖像的短暫閃爍淡出,然後再次變爲空白。
我遇到的另一個問題是,我從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 = [email protected] * 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);
}
我沒有閃光燈高手,賭注一般可以計算的大多數問題出由兩種分析代碼,或在網上搜集了;然而,這讓我很難過。
任何幫助真的很感激,我先謝謝你們。