Извиняюсь, что зачастил с вопросами тут на форуме, но столкнулся с ситуацией, которая поставила меня в тупик, и больше обратиться некуда. Для изучения экшнскрипта 3.0 пишу игру во Flash CS5 + FlashDevelop. В игре есть главное меню, в котором при клике на пункте «Опции» создается и выводится на экран экземпляр класса Settingsdialog потомок мувиклипа. В нем расположено несколько компонентов - чекбоксы, радиобаттоны, слайдеры и т.д. Есть статический класс GameSettings, в котором хранятся настройки игры. С Settingsdialog’а с помощью компонентов осуществляется редактирование свойств класса GameSettings. Судя по трассируемым переменным редактирование проходит успешно. Затем я закрываю Settingsdialog и хочу открыть его заново с тем состоянием компонентов, которое отображает сделанные настройки. Для этого в конструкторе этого класса я прописал функции, которые обращаются к GameSettings, и приводят значения компонентов в соответствующее состояние. Опять же судя по результатам трассировки (и свойств GameSettings и состояний компонентов) это проходит успешно, значения присваиваются, но окно открывается с настройками выставленными по умолчанию!!! Вот пример кода из класса Settingsdialog (лишнее вырезал, оставил только методы, которые должны выставлять компоненты в нужное состояние). В комментариях значения второй трассировки переменных при втором открытии окна (после того как дефолтные настройки были изменены).

Код:
package dialogs
{
import fl.events.SliderEvent;
import flash.display.MovieClip;
import dialogs.DialogWindow;
import flash.events.Event;
import flash.events.MouseEvent;
import main.GameSettings;
import fl.controls.*;
import fl.lang.Locale;
public class Settingsdialog extends DialogWindow
{
private var settings:GameSettings;
public function Settingsdialog()
{
slider.addEventListener(SliderEvent.CHANGE, sliderChanged);
languageCombobox.addEventListener (Event.CHANGE, languageSelected);
nosound.addEventListener (Event.CHANGE, onRadioButton); //это три радиобаттона, обрабатываются одной функцией
gamesound.addEventListener (Event.CHANGE, onRadioButton);
allsounds.addEventListener (Event.CHANGE, onRadioButton);
configureRadioAndCheck ();
configureSlider ();
}
public function configureRadioAndCheck ():void
{
trace (GameSettings._nosound + "nosound"); // по дефолту false, во второй раз, после редактирования показывает true как надо
if (GameSettings._nosound)
{
nosound.selected = true;
trace (nosound.selected + " nosound.selected") // тут тру – как надо, но при отрисовке окна выбран не этот радиобаттон, а дефолтовый
}
if (GameSettings._gamesound)
{
gamesound.selected = true;
}
if (GameSettings._allsound)
{
allsounds.selected = true;
}
}
public function configureSlider ():void
{
slider.value = GameSettings.DIFFICULTY;
trace (GameSettings.DIFFICULTY + "difficulty");
trace (slider.value + "slider"); // Значение слайдера соответствует значению диффикульти, но отображается опять же дефолтовое значение
}
Добавлено через 53 секунды
извиняюсь за криво расставленные скобки :-(