flex добавить дочерний элемент Radiobutton в VBox

У меня проблемы с добавлением радиокнопки в VBox в ActionScript.

    var radioButton:RadioButton = new RadioButton();
    radioButton.groupName = "source";
    radioButton.label = "label";

    radioButton.selected = false;
    radioButton.addEventListener(Event.CHANGE, sourceChangeHandler);

    vBox.addChild(radioButton);

Сначала я создал эти радиокнопки в mxml, и он работал нормально, но теперь, когда радиокнопки нужно динамически генерировать в ActionScript, это не работает.

При переходе через отладчик я получаю ошибку привязки (1009) при попытке выполнить оператор addchild, и в VBox ничего не отображается. Что-то я делаю не так?


person asawilliams    schedule 02.02.2010    source источник


Ответы (1)


это выглядит нормально, единственное, что я вижу, это то, что вы можете попробовать изменить

radioButton = new RadioButton();

to

var radioButton:RadioButton = new RadioButton();

Если это не так, это может иметь какое-то отношение к тому, как вы создаете экземпляр VBox.

ИЗМЕНИТЬ

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

creationPolicy="All"

Таким образом, vBox существует в памяти, когда к нему добавляется переключатель.

person invertedSpear    schedule 02.02.2010
comment
извините за путаницу. Я вырезал код из большего файла, и переменная (radiobutton) была создана правильно, но не во фрагменте, который я опубликовал. Исправлен фрагмент. Прости. - person asawilliams; 03.02.2010
comment
Я так и подумал. Немного заглянув в вашу ошибку, похоже, что вероятная причина заключается в том, что VBox еще не создан, когда вы пытаетесь вызвать метод addChild, можете ли вы дать фрагмент создания экземпляра VBox? А также, может быть, показать, когда вызывается эта функция? - person invertedSpear; 03.02.2010
comment
контейнер, в котором он находится, находится в стеке просмотра и не является выбранным контейнером. как вы думаете, это источник проблемы? - person asawilliams; 03.02.2010
comment
Да, если элемент не был поднят в стеке просмотра, значит, он еще не существует. вы можете исправить это, изменив стек просмотра и добавив к нему свойство creationPolicy = All. Это создаст все элементы в стеке просмотра, чтобы с ними можно было выполнять действия. - person invertedSpear; 03.02.2010