массив изображений - не перебирает все изображения - PullRequest
0 голосов
/ 20 ноября 2010

Проблема - вместо циклического перемещения по изображениям в массиве он переходит прямо к последнему.

import fl.transitions.Tween;
import fl.transitions.easing.*;

play_btn.addEventListener(MouseEvent.CLICK, goPlay)

var images = new Array();

images[0] = "1.jpg";
images[1] = "2.jpg";
images[2] = "3.jpg";
images[3] = "4.jpg";
images[4] = "5.jpg";
images[5] = "6.jpg";
images[6] = "7.jpg";
images[7] = "8.jpg";
images[8] = "9.jpg";
images[9] = "10.jpg";

var currentImage:int = 0;

function goPlay(e:MouseEvent):void {
 while (currentImage < 10) {

   loadWindow.source = images[currentImage];
   currentImage++;
   var myTween:Tween = new Tween(loadWindow, "alpha", None.easeOut, 1, 0, 3, true)

}
}

1 Ответ

2 голосов
/ 20 ноября 2010

Вот ваша проблема

на goPlay, вы перебираете все из них и заканчиваете последним

по сути, вы делаете это

function goPlay(e:MouseEvent) {
   loadWindow.source = images[0];
   var myTween:Tween = new Tween(loadWindow, "alpha", None.easeOut, 1, 0, 5, true);
   loadWindow.source = images[1];
   var myTween:Tween = new Tween(loadWindow, "alpha", None.easeOut, 1, 0, 5, true);
   loadWindow.source = images[2];
   var myTween:Tween = new Tween(loadWindow, "alpha", None.easeOut, 1, 0, 5, true);
   etc.. 
   loadWindow.source = images[9];
   var myTween:Tween = new Tween(loadWindow, "alpha", None.easeOut, 1, 0, 5, true);
}

, который становится

function goPlay(e:MouseEvent) {
   loadWindow.source = images[9];
   var myTween:Tween = new Tween(loadWindow, "alpha", None.easeOut, 1, 0, 5, true);
}

поэтому каждый раз, когда вы нажимаете, добавляется только последнее изображение

вам нужно определить переменную i вне функции

как то так

var _currentImage:int = 0;
function goPlay(e:MouseEvent) {
   currentImage = (currentImage+1)%images.length;
   loadWindow.source = images[currentImage];
   var myTween:Tween = new Tween(loadWindow, "alpha", None.easeOut, 1, 0, 5, true);
}

надеюсь, что все ясно


, если вы хотите, чтобы анимация происходила автоматически (после нажатия кнопки) ...

var _currentImage:int = 0;
var myTimer:Timer = new Timer(5000, 0); // 5 seconds
myTimer.addEventListener(TimerEvent.TIMER, switchPics);

function goPlay(e:MouseEvent) {
   myTimer.start();
}

function goStop(e:MouseEvent) {
   myTimer.stop();
}

function switchPics(event:TimerEvent):void {
   currentImage = (currentImage+1)%images.length;
   loadWindow.source = images[currentImage];
   var myTween:Tween = new Tween(loadWindow, "alpha", None.easeOut, 1, 0, 5, true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...