2009-08-25 2 views
0

мне нужно, чтобы создать временную шкалу между 2 указанными датами, то есть: 2006-01-20 - 2009-02-14Создать временную шкалу от даты до даты в Flex/AS3

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

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

timeline

Любые советы?

ответ

1

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

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

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

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

+0

Да, я думал об использовании диаграммы, но не нашел способ, чтобы показать, что данные в таблице , Сейчас я буду играть с ним. Спасибо!. (если вы знаете аналогичный пример, это было бы полезно) –

+0

Ну, возможно, основные и незначительные тики. Если вы можете предоставить более подробную информацию, я могу помочь вам в том, что вам нужно, но из осей, которые вы показали, это должно быть довольно легко сделать. – CookieOfFortune

+0

У меня есть CartesianChart со всеми загруженными данными (мне не нужно отображать серию). Но я не вижу, как показывать только годы (1 января) и 4 маркера до следующего 1 января. Пробовал с AxisRenderer, но я застрял. –

2

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

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

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

EDIT: Формулы Чтобы получить позицию клещи, вы должны были бы разделить ширину шкалы времени по количеству тиков минус один. Скажем, у нас была временная шкала в 400 пикселей с 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, в крайнем левом положении, при х 0. 400/4 * 0 = 0

  • клеща 1, рядом крайнее левое положение, при х 100. 400/4 * 1 = 0

  • клеща 2, в середине, в точке х 200. 400/4 * 2 = 200

  • и так далее, клеща 3 при х 300 и 4 в точке х 400 (справа).

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

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

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

+0

Да, проблема с созданием этого с нуля - это то, что вам нужно сделать много формул, чтобы получить правильное положение во времени, основанное на ширине пикселя. –

+0

Нет, на самом деле. См. Мое редактирование. – Aethex

+0

Удивительно, я дам ему попробовать, выглядит интересно. Но что происходит с диапазонами дат, например, 30 лет? –

Смежные вопросы