Как отобразить детей подряд, as3 - PullRequest
3 голосов
/ 29 марта 2010

Как отобразить детей подряд? Под преемственностью я подразумеваю 1,2,3,4 и т. Д. Я стремлюсь к увеличению цикла с помощью цикла или использования таймера.

Добавление, удаление, отображение или исчезновение детей - все может сработать. я хочу простой способ показывать 1 ребенка каждую секунду, пока я не достигну 10.

МЕТОДЫ ПРОВЕРЕНЫ
addChild, removeChild, AddChildAt, getChildAt, setChildIndex
видимый! видимый
для цикла

Примечание
Мои другие ответы для приращения одного экранного объекта хороши, но я не вижу, как это работает с несколькими дочерними объектами. Я надеюсь, что другие найдут этот вопрос полезным.

1 Ответ

0 голосов
/ 29 марта 2010

Что касается макета, я бы рекомендовал использовать 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;
    }

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...