PDA

Просмотр полной версии : Прошу совета: как бы без постоянной перерисовки?


ivenhoe
28.05.2007, 14:31
Здравствуй, многоуважаемая и мудрая общественность!

Имеется несколько нетривиальная задача. Отдельные части ролика создаются динамически через moveTo, lineTo etc. Причем содержимое должно перемещаться мышью. В качестве примера - координатная сетка.
Т.е., например, пользователь схватил мышью эту сетку и тянет ее, пока ему не надоест. С целью просмотреть что-то в разных частях координатной плоскости.
Формировать сетку приходится динамически - например, выбран нужный режим просмотра - сетка сформирована. Теперь пользователь захотел подвигать координатную плоскость. Он хватает ее мышью и тянет. Часть сетки "ушла" за экран, часть - "появилась" с другой стороны. Заранее наплодить линий сетки и затем маскировать их - не выход, т.к. заранее совершенно неизвестно, как долго пользователю придет в голову ее скроллировать. Поэтому фактически при каждом onMouseMove вызывается перерисовка линий сетки: весь клип MovieClip.clear(), и затем рисуем по-новой.
Естественно, что способ не самый производительный... По крайней мере, по сравнению с
mc._x += dx;
mc._y += dy;

Наплодить мувиклипов "чтоб в экран влезало", а потом переставлять их в соответствии с "позицией скроллинга" тоже не дает выигрыша по скорости. Заметно "рваное" перемещение сетки.

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

iNils
28.05.2007, 14:44
При выходе координат перемещаемого клипа на расстояние периода сетки (по модулю) от начальной точки, сделать сдвиг сетки обратно на период * число периодов и сохранить это значение.

ivenhoe
28.05.2007, 14:52
мысль такая тоже была. Чтож, чудес не бывает :)