2010-02-19 5 views
0

J'espère que quelqu'un là-bas peut éventuellement faire la lumière sur un des problèmes de couple que je suis rencontrais avec un diaporama d'imagesAS3 XML Diaporama Malheurs

Je travaille sur un diaporama simple pour un projet et tout allait très bien/comme prévu jusqu'à ce que j'ai créé une fonction pour masquer les images précédentes avant d'afficher le suivant. Au premier passage à travers tout semble bien fonctionner; Une fois le diaporama recommencé, les images ne s'affichent pas, mais quand il charge l'image suivante, il lit l'interpolation de la fonction précédente de masquage qui affiche brièvement l'image avant de disparaître. Donc, essentiellement, l'affichage est vide, puis la minuterie appelle dans la diapositive suivante et c'est un bref éclair d'une image qui s'éteint, puis vide à nouveau.

Un autre problème que je rencontre est que le texte que je charge depuis le XML ne semble pas vouloir entrer ou sortir comme il le devrait.

Voici le code:

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); 

} 

Je ne suis pas whiz flash, pari peut généralement comprendre la plupart des problèmes par l'analyse soit le code, ou fouiller en ligne; Cependant, cela m'a bloqué.

Toute aide serait vraiment appréciée, et je vous remercie tous à l'avance.

Répondre

0

Essayez de déclarer les variables oldTitleTween, oldDateTween, oldCatTween, oldDescTween comme des variables globales, au lieu des variables que locales à la fonction hidePrev()