|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Фигня с protected сеттером
Друзья, выручайте. Чтобы не устраивать проверку каждого устанавливаемого для персонажа свойства сделал в классе Character такую конструкцию:
public function setCharacterStaticProp(propID: String, value: Number) : void { if (this[propID]) throw ("Character -> setCharacterStaticProp: Данное свойство не может быть изменено в процессе игры"); // другие проверки this[propID] = value; } protected function set stamina(value: uint) : void {_stamina = value } // Выносливость public function get stamina() : uint {return _stamina } // Выносливость Не понимаю, почему Где он тут более одного варианта увидел?
__________________
Не сломано - не чини! |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Затем, что свойств прилично, требования к ним одинаковые: чтобы не было назначено повторно, чтобы не выходило за пределы шкалы и т.п. Вначале я вставлял проверку в каждый сеттер, потом понял, что это не по-православному и сделал то что сделал. Убрал внешний доступ к сеттерам и заменил на единую функцию проверки и установки свойства по его ID.
Добавлено через 21 минуту Причём если в сеттере меняю доступ на public, всё прекрасно работает. Но теряет смысл тогда
__________________
Не сломано - не чини! |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Хм. Воистину, совет достойный китайского мудреца. А тактические идеи есть?
Если есть набор свойств, которые должны устанавливаться извне, но предварительно проверяться на соответствие некому единому перечню условий, как такое реализовать? Повторюсь, изначально в каждом сеттере стоял один и тот же код, отличавшийся только именем проверяемого свойства.
__________________
Не сломано - не чини! |
|
|||||
Просто завести статическую, публичную функцию и юзать её из сеттеров? Можно пометить как inline.
Вообще, обращаться к свойствам и методам по строковому ключу в рамках самого приложения, где всё и так известно - ну так себе идея. Теряем типизацию, проверку при компиляции, оптимизацию, получаем больше расхода памяти и цп.
__________________
Дети не должны знать о своих родителях Последний раз редактировалось Tails; 05.04.2018 в 19:51. |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
caseyryan, спасибо, намотал на ус.
Цитата:
У меня так по всей программе пока сделано. Например, в классе с параметрами игровых действий ActionData может быть написано что-то типа а в классе персонажа соответственно И тогда в классе обработки выбранного игроком действия легко подтягиваем: Как бы ты подобную связь реализовал?
__________________
Не сломано - не чини! |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Что нибудь вроде
Цитата:
Вообще, то что ты хочешь называется метапрограмирование и в AS этого почти нет (а то что есть лучше не использовать)
__________________
Тут мужик танцует и поёт про флэш Последний раз редактировалось Psycho Tiger; 09.04.2018 в 12:17. |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Psycho Tiger, не понял формулировку @_data = . Можно объяснить или написать, как такая запись называется, чтобы погуглить?
__________________
Не сломано - не чини! |
Часовой пояс GMT +4, время: 05:40. |
|
« Предыдущая тема | Следующая тема » |
|
|