Цитата:
Сообщение от svdsLis
- в каждую под-модель передавать GlobalModel и из неё вызывать диспетчерезацию?
|
Нет. Каждая модель сама посылает свои события. Все кому нужно, могут слушать эти события, подписавшись на них непосредственно в этой конкретной модели.
Или:
Цитата:
Сообщение от svdsLis
- или делать bubble (но это не удобно)
|
И это очень даже удобно. Другое дело, что мастерить "всплывание" тупо лень (каюсь, я сам до этого так и не дошел, подписываю вьюхи и контроллеры непосредственно на нужные им модели).
Цитата:
Сообщение от svdsLis
- использовать только одно событие "Event.CHANGE" или создавать для этого свои классы событий
|
По месту смотреть надо. Порой и вовсе без событий можно (нужно) обойтись. Ну, например, если у тебя в разных местах логики меняются, скажем, x, y и state. Если это, например, моделька юнита в игре про атаку клонов ) то тулить каждой вьюхе каждого отдельного юнита ТРИ события, которые меняют ее отображение ТРИ раза целиком (если это просто CHANGE, мы же не знаем, что поменялось) или по частям (если заморочиться и накатать таки CHANGE_X, CHANGE_Y, CHANGE_STATE), это не есть хорошо. Тут лучше и вовсе обойтись без событий. Достаточно просто каждой вьюхе отдельного юнита по своему ентерфрейму, или даже из одного родительского ентерфрейма в цикле вызывая метод redraw или update (или как там еще) у каждого юнита, перерисоваться ОДИН раз. Если нужно, можно даже инвалидаторы (так вроде называются) притулить в модель. Это такие булевы переменные, которые указывают, поменялось ли что-то с тех пор, как последний раз интересовались. Ну это если таки да нужно не делать холостых ходов. Например не годится постоянно менять отображение юнита на то же самое (это порой сопряжено с add/removeChild или переключением видимости и все такое).