如何连续展示孩子?依次表示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;
    }

}

}

07-27 19:02