Во Flex как узнать, когда изменяются свойства динамического объекта? - PullRequest
2 голосов
/ 15 января 2009

У меня есть динамический класс, который служит контейнером для хранения настроек конфигурации. Настройки являются переменными этого класса, и у него есть методы для чтения и записи в файл конфигурации, базу данных и т. Д. Теперь я хочу инициировать запись в постоянное хранилище всякий раз, когда изменяется переменная класса. Поскольку переменные добавляются динамически во время выполнения, я не могу использовать методы get / set, а также, если бы мог, это привело бы к большому количеству шаблонного кода.

Как мне вызвать событие для изменения свойств моего класса?

Ответы [ 2 ]

2 голосов
/ 15 января 2009

Вы можете создать подкласс этого класса из mx.utils.Proxy. Он позволяет вам быть динамическим, но при этом иметь возможность писать некоторый пользовательский код, который запускается при каждом обращении к свойствам (аналогично методам получения и установки - см. getProperty() и setProperty().)

0 голосов
/ 15 января 2009

Я хотел бы рассмотреть возможность избежать динамического объекта, а лучше создать класс хранения данных (SettingsModel?) С одним методом хранения и одним методом для получения данных. Поэтому вместо использования:

configurationSettings.randomSetting = value;

... вы бы написали:

configurationSettings.store("randomSetting", value);

Вы можете хранить именованные настройки внутри словаря и выполнять любую магию, необходимую для метода store().

Основным преимуществом здесь является удобочитаемость: когда вы видите вызываемый метод, вы знаете, что за ним стоит функциональность. По той же причине я склонен не любить функции получения / установки.

В конце концов, это дело вкуса, поэтому, если ваш код не сломан, зачем это исправлять. :)

...