Логика визуализации ООП AS3 - связывание фильтров и источника данных - PullRequest
0 голосов
/ 16 августа 2010

Я пытаюсь визуализировать результаты опроса в ActionScript 3.0.
Что мне хотелось бы получить, так это как лучше связать «фильтры» (верхний правый угол на вложенном изображении) с источником данных вгибкий способ ООП.

Массив результатов теперь содержит как количество правильных ответов, так и метаданные о человеке, проходящем тест.Метаданные могут быть как дискретными (пол), так и непрерывными (возраст).

results = [{name: "Lisa", правильные: 5, пол: 0, возраст: 52}, {name: "Peter", правильно: 3, пол: 1, возраст: 32} ...]

Как мне указать флажки, например, изменить цвет при смене фильтра?Должен ли каждый объект box содержать свои собственные данные или должен быть какой-то контроллер, который прослушивает объект фильтра для отправки события и после этого вызывает метод box.setColor?Какие у меня варианты?

альтернативный текст http://j.imagehost.org/0002/index.png

Ответы [ 2 ]

0 голосов
/ 16 августа 2010

Я думаю, что общая идея состояла бы в том, чтобы сделать вещи максимально гибкими, сегодня вы хотите использовать визуализацию блочного типа, завтра вы можете захотеть другой тип.Каждый объект box, содержащий данные, кажется довольно жестким, поскольку дает вам только одну опцию.Я бы попытался сохранить логику как можно более отделенной от представления с помощью класса, который обрабатывает анализ данных, и другого класса или набора классов, которые ничего не знают о данных и будут просто отображать цветные поля, круговые диаграммы, 3D-графикии т.д ...

0 голосов
/ 16 августа 2010

Сначала я бы создал класс StudentBox, который содержит данные о каждом ученике и имеет метод changeColor, который принимает цвет и изменяет цвет StudentBox на цвет передаваемого цвета.Затем я создал бы массив или вектор в AS3, который содержит всех созданных вами учеников.

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

1) Перебрать все StudentBox в массиве, содержащем каждый StudentBox

2) для каждого StudentBox, через который вы проходите, изменить цвет StudentBox в зависимости от его фильтра

...