Что касается макета, я бы рекомендовал использовать ViewStack . Вам нужно будет добавить каждого дочернего элемента только один раз, а затем просто прокрутить индексы самого стека.
Вы можете комбинировать это с Timer , перезапуская его каждый раз, когда изменяется индекс стека. Обратный отсчет и, когда таймер завершит работу, увеличьте выбранный дочерний индекс ViewStack. Когда вы нажмете на последнего потомка, сбросьте индекс на 0 или сделайте что-то другое.
РЕДАКТИРОВАТЬ : вот пример файла, который я собрал. Визуально это не очень интересно, поскольку каждый дочерний элемент - это просто VBox с жирным шрифтом, указывающим его индекс в ViewStack. Если вы хотите видеть больше визуальных отличий у детей, вы можете иметь разные цвета фона для каждого, и тогда вы будете видеть разные фоны каждый раз, когда ViewStack меняет свое состояние.
Приложение, которое я собрал, написано на Flex, поэтому оно встраивает этот класс в основной файл MXML, в котором есть кнопка для вызова функции startTimer (). Я не уверен, как бы вы использовали этот CS4, но, надеюсь, вы можете взять его отсюда:)
package {
import flash.events.TimerEvent;
import flash.utils.*;
import mx.containers.Box;
import mx.containers.VBox;
import mx.containers.ViewStack;
import mx.controls.Label;
public class StackExample extends Box {
private var stack:ViewStack;
private var timer:Timer;
public function StackExample() {
super();
stack = new ViewStack();
stack.percentHeight = 100;
stack.percentWidth = 100;
//Add some sample children so we can watch
//the ViewStack increment. The numbering here
//is arbitrary
for(var i:int=0; i<10; i++) {
stack.addChild(createNewBox(i));
}
stack.selectedIndex = 0;
addChild(stack);
}
//Main application will invoke this function to show the ViewStack
//changing its children every second until the timer is exhausted
public function startTimer():void {
timer = new Timer(1000, 10);
//"false, 0, true" forces the listener to use weak references so
//the event will be cleaned up if this class is destroyed
timer.addEventListener(TimerEvent.TIMER, incrementStack, false, 0, true);
timer.start();
}
private function createNewBox(index:int):Box {
var newChildBox:VBox = new VBox();
newChildBox.setStyle("borderStyle", "solid");
var childLabel:Label = new Label();
childLabel.percentWidth = 100;
childLabel.text = "Child: " + index.toString();
childLabel.setStyle("fontWeight", "bold");
newChildBox.addChild(childLabel);
return newChildBox;
}
private function incrementStack(event:TimerEvent):void {
if(stack.selectedIndex < stack.numChildren)
stack.selectedIndex = stack.selectedIndex + 1;
}
}
}