Как создать динамическую переменную vbox в actionscript - PullRequest
0 голосов
/ 11 мая 2009

Мне нужно создать несколько vbox-ов для каждого цикла. Теперь я хочу сделать что-то подобное.

formsArray ["vb" + counter] = новый VBox; formsArray ["vb" + counter] .visible = true;

добавить ярлыки и т. Д.

Я не могу заставить эту вещь работать. Кто-нибудь есть идеи, как создать динамические имена переменных для моих vbox-ов?

Спасибо

1 Ответ

0 голосов
/ 11 мая 2009

Прежде всего, чтобы использовать ассоциативный массив, вам нужно использовать Объект, а не Массив (возможно, вы уже есть, тогда неважно).

Вы можете достичь того, что хотите сделать, следующим образом:

var vbox:VBox;
var formsArray:Object = new Object();
var counter:int = 0;

for each(<statement>)
{
    vbox = new VBox();
    formsArray[("vb" + counter.toString())] = vbox;
    counter++;
}

Значение свойства VBox по умолчанию равно true, поэтому нет необходимости явно устанавливать его.

Ответ на дополнительный вопрос в комментариях:

Вам не нужно использовать динамические ссылки, чтобы делать то, что вы хотите. Для этого лучше всего создать пользовательский компонент, расширяющий класс VBox, создав новый класс MXML с корневым тегом VBox. Что-то вроде этого:

<mx:VBox ... >

    <mx:Button ... click="btnClickHandler()"/>
    <mx:Script>
        <![CDATA[

            // Toggles visibility of the VBox
            private function btnClickHandler():void
            {
                 visible = !visible;
            }

        ]]>
    </mx:Script>

</mx:VBox>

Тогда вы можете просто создать столько этих пользовательских VBox, сколько вам нужно. Однако, сделав VBox невидимым, вы также сделаете скрытую кнопку невидимой, что затруднит повторное нажатие. :) Вы, вероятно, хотите обратиться к этому. В любом случае, я надеюсь, что это укажет вам правильное направление.

...