2010-02-19 3 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

함수 hidePrev에 변수 oldTitleTween, oldDateTween, oldCatTween 전역 변수로서 oldDescTween 대신, 같은 지역 변수()

선언 시도