Создать график с даты на дату в Flex / AS3 - PullRequest
0 голосов
/ 25 августа 2009

Мне нужно создать график между 2 указанными датами, то есть: 2006-01-20 - 2009-02-14

Временная шкала должна быть нарисована на заданной ширине (может быть изменена), то есть: 600px

Но мне нужно добавить маркеры, один на начало года, и другие 4 раза в год (каждые 73 дня приблизительно):

timeline

Какие-нибудь советы?

Ответы [ 2 ]

2 голосов
/ 25 августа 2009

Я бы создал компонент с нуля, возможно, на основе компонента Canvas, и добавил бы строки и метки, разделив ширину компонента на количество строк (или что-то в этом роде - я не лучший в математике) .

Вы также можете реализовать функцию всплывающего окна с информацией, когда пользователь наводит курсор на определенную часть временной шкалы.

То, что вы хотите, имеет характерные для временной шкалы функции, которых нет у осей диаграммы. Я бы не пошел на компромисс с использованием компонента, не предназначенного для этой конкретной задачи, а также с ошибками или обходными обходными путями. Flex был создан для быстрого расширения, так почему бы не воспользоваться этой функцией?

РЕДАКТИРОВАТЬ : формулы Чтобы определить положение тиков, вам нужно разделить ширину временной шкалы на количество тиков минус один. Скажем, у нас была временная шкала 400px с 5 тиками (считая те, что на дальних сторонах временной шкалы). Мы считаем, что тики начинаются с 0. Все, что нам нужно сделать, чтобы получить положение тиков, это разделить 400 на 4 и умножить это на число тиков.

В коде:

for (var i : int = 0; i < num_ticks; i++) {
    ticks[i].x = timeline_width / num_ticks-1 * i;
    // do some drawing of the ticks
}

Я проведу вас через это.

  • Отметьте 0 слева, в точке x 0. 400/4 * 0 = 0

  • Тик 1, в крайнем левом углу, на х 100. 400/4 * 1 = 0

  • Тик 2, посередине, на х 200. 400/4 * 2 = 200

  • И т. Д., Отметьте 3 при x 300 и 4 при x 400 (в крайнем правом углу).

Что делать, если приведенная выше формула возвращает десятичное число? Вокруг этого! Пользователи едва заметят разницу в один пиксель (хотя я думаю, что такие операции с целыми числами округляются автоматически).

Вы можете добавить поле слева или справа от временной шкалы, выполнив timeline_width-margin (должно быть четным числом) и увеличив позицию x каждого тика на половину. Это добавит немного места с каждой стороны и центрирует галочки.

Если вам повезет, я скоро смогу сделать для вас рабочий прототип; -)

1 голос
/ 25 августа 2009

Я думаю, что оси в пакете Flex Charting позволяют выполнять такое форматирование по умолчанию.

Если вам нужно сделать больше, Flex Charts также позволяет вам рисовать их. Это может быть то, что вы ищете.

Ссылка: http://livedocs.adobe.com/flex/3/html/help.html?content=charts_formatting_02.html

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

...