![]() |
Как можно повысить производительность отрисовки?
Здравствуйте!
В приложении, которое я разрабатываю, есть необходимость использовать нестандартные курсоры. Для этого я использую просто мувиклип, координаты которого я меняю. Проблема в том, что курсор ездит по поверхности, которая довольно часто перерисовывается. Там расположено три графика (по 1000 точек), которые могут перерисовываться раз в каждые 100мс + сверху графиков могут быть другие мувиклипы, положение которых также меняется каждые 100мс. При такой перерисовке мой курсор начинает нещадно отставать от настоящего. Отстает на несколько сантиметров. Есть ли способ ускорить отрисовку курсора? И еще. Как я понимаю такие методы как lineTo, moveTo ничего не рисуют, а просто добавляются в очередь. Как можно засечь сколько занимает сама отрисовка? |
updateAfterEvent
|
__etc, правильно ли я понял, то вы имели ввиду метод экземпляра класса MouseEvent (хотя такой же есть еще у KeyboardEvent и TimerEvent)? И, если это так, то я должен вызывать этот метод после изменения координат моего курсора.
Правильно понял? PS Кстати, я пробовал заменить ручное присвоение координат на startDrag(), то есть в этом случае перемещением управляла сама среда, и эффект был такой же. А какие есть средства профилировани для флеша? |
Подпишитесь на событие MOUSE_MOVE, в нём вызывайте метод updateAfterEvent у пришедшего события.
|
Мне в голову пришла адская идея, мб поможет. Сделайте буферизацию!
Как я себе это представляю: Имеется спрайт, который на сцене не лежит. В этом спрайте рисуются графики, причём не одним куском, а по частям, с распределением во времени. Т.е. например если нужно рисовать 1000 точек каждые 100мс, рисуется по 100 точек каждые 10мс. Это позволит более равномерно распределить нагрузку по времени. Когда график в спрайте нарисован полностью, он отрисовывается в битмап, который лежит на сцене. Ещё можно попробовать написать рисование графиков в растре, BitmapData.lock() в помощь. Но тут я не знаю, будет ли оно работать быстрее. |
GAIKER, а может проще использовать updateAfterEvent?
|
__etc, с updateAfterEvent стало заметно быстрее, только вот от курсора стали оставаться «запчасти»:
http://img-fotki.yandex.ru/get/3209/...d1ff5604_L.jpg Причем это происходит, когда прорисовка подложки, о которой я говорил в сабже, не делается вообще. Как можно избав иться от «запчастей»? И самое главное, откуда они берутся? |
Ну это надо вас спросить, откуда они берутся.
|
BlooDHounD, если проц загибается, то updateAfterEvent не поможет. Или я чего-то не понимаю? :)
|
__etc, я с этим курсором кроме изменения координат ничего не делаю.
Вот весь код маус мува: Код AS3:
|
| Часовой пояс GMT +4, время: 21:26. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.