2010-02-19 88 views
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); 

} 

我沒有閃光燈高手,賭注一般可以計算的大多數問題出由兩種分析代碼,或在網上搜集了;然而,這讓我很難過。

任何幫助真的很感激,我先謝謝你們。

回答

0

嘗試聲明變量oldTitleTween,oldDateTween,oldCatTween,oldDescTween作爲全局變量,而不是本地變量的函數hidePrev()