![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Например у меня есть несколько графических объектов, вокруг которых рисуется квадратная рамка. И есть класс пользовательских настроек, в котором есть CheckBox со значением true - рисовать рамки, false - нет. В отдельном окошке можно переключать чек-бокс. Как организовать передачу данных при изменении пользователем состояния чек-бокса? Т.е. - снял чек-бокс - спрятались рамки. В голову приходит навесить на каждый объект слушатель события и генерировать это событие при изменении пользователем настроек. Но тогда в приложении будут постоянно висеть десятка два слушателей по сути ничем не занятых и использоваться они будут очень редко. Вроде выходит не рационально. А как можно сделать еще?
|
|
|||||
|
Banned
|
Сделайте контроллер изображений (ImageController). Подпишите его на одно событие от объекта, который изменяет состояние чекбокса. Затем этот контроллер скажет всем графическим объектам:
|
|
|||||
|
Что такое контроллер изображений? Контейнер в который поместить их все и подписать его один на событие? У меня итак они все в контейнере, но дело в том, что не все изображения в контейнере имеют рамки и в этом случае придется тоже делать какое-то выборочное обращение только к нужным объектам.
|
|
|||||
|
Banned
|
Цитата:
package { public class ImageController { private var model:EventDispatcher; private var list:Array; public function ImageController(model:EventDispatcher, list:Array) { model.addEventListener(Event.CHANGE, onChange); this.list = list; } private function onChange (event:Event):void { for (var i:uint = 0; i < list.length; i++) { (list[i] as GraphObject).frame = model.frame; } } } } Цитата:
Последний раз редактировалось toFL; 22.08.2011 в 18:13. |
|
|||||
|
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Говоря о примере toFL - зачем конроллеру обновлять отображения? для этого есть события:
model.dispatchEvent(new Event(Event.CHANGE)); ... // где-то в объекте отображения model.addEventListener(Event.CHANGE, onModelChange); ... и никаких циклов, никаких массивов
__________________
...вселенская грусть |
|
|||||
|
Banned
|
Ага, и затем Вам необходимо изменить model (например сделать другой или изменить параметры и т.п.) и "привет" изменения в классах самого нижнего уровня. Недавно был огромный холивар на эту тему (Статические параметры и т.п.).
Поэтому: Цитата:
Добавлено через 11 минут Цитата:
Контроллер - УПРАВЛЯЕТ однотипными объектами Это разные вещи. Последний раз редактировалось toFL; 23.08.2011 в 12:44. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|