Добавление одной точки к серии гибких линий без перерисовки всего - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть эфирное приложение, которое собирает данные о действиях пользователя и отображает их на графике. Он записывает данные каждую секунду и отображает их на трех разных рядах из одной и той же коллекции массивов.

Сначала это прекрасно работает, но со временем становится все хуже и хуже. Когда он приближается к часу, он почти непригоден.

Я бы хотел иметь возможность добавить точку на график и сделать так, чтобы flex просто рисовал новую точку, а не делал недействительными всю серию и перерисовывал ее. Это возможно? Я готов переопределить что-то, чтобы сделать эту работу.

Мое последнее желание - получить в среднем 5 или 10 баллов и только добавлять их. Это все равно будет плохо работать, когда пользователь собирается в течение 3 часов или около того, но я не могу придумать лучшего способа.

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Во-первых, я бы не использовал ArrayCollection, но ArrayList, поскольку он быстрее, чем ArrayCollection. Еще лучше было бы использовать VectorCollection .

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

Я бы порекомендовал вам либо создать свой собственный очень быстрый и грязный компонент, который рисует линии (это довольно легко, я сделал это сам), либо использовать другую библиотеку графиков, например Flare .

0 голосов
/ 22 апреля 2011

Я добавил UIComponent, который перекрыл весь график. Затем я использовал cartesiandatacanvas для преобразования текущей точки данных в координаты x / y на экране и выполнил рисование lineTo из последней точки.

Это позволяет мне продолжать рисовать график без полной перезагрузки данных.

Каждая точка вставлена ​​в базу данных sqlite. Если размер диаграммы изменяется, я очищаю uiComponent.graphics, запрашиваю базу данных sqlite и привязываю к ней данные. Если пользователь воспроизводит график оттуда, я оставляю нарисованные линии на графике и продолжаю использовать вышеуказанный метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...