Starling binding
Добрый вечер. Решил попытаться приобщиться на этом форуме к best practices. Ситуация следующая: автор Feathers на форуме сообщил, что сигналы теперь лучше не использовать поскольку события старлинга очень даже good. Я решил переписать для начала бинды флекса [Bindable]. Первоначальный вариант получился такой, что на каждую переменную пришлось делать гет-сет, которые раздули всю модель в несколько раз и из переменных + 3-4 функций в сумме около 100 строк (на всю модель) получилось строк 300. К тому же, сеттеры приходилось делать копипастой, что не слишком-то меня устроило. Решил сделать
Кусок модели-синглтона Код AS3:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
для использования функции masterSetter( Удобства: Ну вообщем-то вроде как толковая замена стандартному бинду флекса без всяких изысков на событиях старлинга, которые реально стоит использовать в противовес стандартным флэшовым событиям. Варианты: Может, попробовать сделать Bind не как класс, а как отдельные функции через include чтобы переменные были private? Либо есть вариант в каком-то фреймворке делать BindInt, BindString etc. |
Извините, что вмешиваюсь без конструктива, но объясните мне практическую ценность такого?
|
Цитата:
Так, выяснилось, что текущий masterSetter работает не совсем корректно. По-моему, событие не считывается при изменении. Можно попробовать добавлять на stage, тогда и наследоваться от dispatchEvent не придется, хотя по-моему, этот метод хуже. Хотя, с хорошими сепаратором и парсилкой можно и так заделать. Если вынести masterSetter как отдельную функцию, то переменные можно оставлять private. Вопрос с событиями. Добавлено через 5 минут Код AS3:
|
А если попробовать наследоваться, кажется, от Proxy и ловить undefined method?
Или сделать класс dynamic и метапрограммированием добавлять методы в рантайме? |
Цитата:
Оказалось, события все-таки передаются и считываются правильно. Значение не обновляется. this - похоже, не прокатывает. Показывает global |
разу оговорюсь, что я мало понимаю в этом,
но если единственной задачей этой конструкции будет синхронизация свойств, то я не вижу почему бы по-простому не создать словарь соответствий и менять свойства напрямую, без посредников (событий) Код AS3:
Код AS3:
Код AS3:
|
Код AS3:
1) "свои" методы модели, возможно, придётся разруливать через тот же callProperty. Вероятно любое обращение к свойствам идёт через это callProperty, поэтому это накладывает свои ограничения, но они решаемы. Я точно не знаю, на as давненько не писал ничего серьезного. 2) Скорее всего это медленно. Чаще всего это не будет никого волновать, но для "узких" мест может потребоваться "настоящий" инлайн-код и прочий тектоник вокруг этой модели. Use wisely. |
silin
я так понял, у вас реализован Observer? Я сначала тоже думал сделать через сигналы, а потом нашел вот ту статью, что я упоминал в заголовке. Psycho Tiger на вид что-то слишком неочевидно. Цитата:
Добавлено через 33 минуты А можно как-нибудь подключить функцию без пакета? Пробовал вынести Код AS3:
Код AS3:
|
>>у вас реализован Observer?..
ничего этого не понимаю, но городить систему событий со связыванием пар свойств через замыкание в анонимном листенере ну как-то очень уж затейливо на мой взгляд при том, что ничего не мешает сделать это напрямую событийная модель старлинга\физерса, как и предпочтения Tynjala, тоже не понятно при чем здесь |
Цитата:
P.S. Хорошая реализация Observera, прямо под имена функций биндинга. Надо бы заценить на тесте. |
Часовой пояс GMT +4, время: 03:12. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.