如何连续展示孩子?依次表示1,2,3,4,依此类推。也许我追求的是通过循环或使用计时器递增。
添加,删除,显示或消失子代都可以。一世
想要一种简单的方法每秒显示一个孩子,直到我达到10。
方法已尝试
addChild,removeChild,AddChildAt,getChildAt,setChildIndex
可见!可见
for循环
注意
我关于增加单个显示对象的其他答案很好,但是我看不到它如何与多个子对象一起工作。我希望其他人对此问题有所帮助。
最佳答案
就布局而言,我建议使用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;
}
}
}