如何连续展示儿童?顺便说一下,我的意思是1,2,3,4等。用循环或使用计时器递增的Perhapse就是我所追求的。
添加,删除,显示或消失儿童,都可以正常工作。一世 想要一种简单的方法来每秒显示1个孩子,直到我达到10岁。
方法已尝试
addChild,removeChild,AddChildAt,getChildAt,setChildIndex
可见的!可见的
for loop
注意
我增加单个显示对象的其他答案都很好,但我不知道这对多个孩子有什么作用。我希望其他人认为这个问题很有帮助。
答案 0 :(得分:0)
就布局而言,我建议使用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;
}
}
}