Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Сохранение размера MovieClip внутри масштабируемого MovieClip (http://www.flasher.ru/forum/showthread.php?t=129233)

vanguish 12.09.2009 01:06

Почему выбрал именно масштабирование, объясню....
Карта приближается и отдаляется плавно... соответственно если менять координаты отметок в не масштабируемом контейнере, то они как бы будут догонять свои координаты....отставать , причем визуально видимо...
Если же эти отметки лежат в масштабируемом контейнере , где их координаты постоянны... то придется менять их масштаб обратно пропорционально масштабу карты.

Поэтому в каждом есть событие onEnterFrame ...для изменения масштаба....

Может не рационально... тогда подскажите как разгрузить систему от onEnterFrame .

mooncar 12.09.2009 03:14

Зачем вам вообще нужен это onEnterFrame?
Организуйте без него. Ведь есть же событие, при котором вы масштаб карты меняете? При этом же событии и пересчет меток делайте.

Добавлено через 56 секунд
Цитата:

Сообщение от vanguish (Сообщение 850207)
то они как бы будут догонять свои координаты....отставать , причем визуально видимо...

Вы это проверили или как...?

mooncar 12.09.2009 13:10

Вложений: 1
Цитата:

Сообщение от vanguish (Сообщение 850207)
Может не рационально... тогда подскажите как разгрузить систему от onEnterFrame .

Вот посмотрите пример.
Там нет onEnterFrame.
Масштаб меняется с кнопок и с колесика мыши.
По желанию плавного увеличения/уменьшения масштаба с кнопок можно переделать изменение масштаба не пошагово, а через интервальную функцию и событие кнопки onPress.

in4core 13.09.2009 02:13

Ну вот еще вариант не РАЦИОНАЛЬНЫЙ придумал)))
Код AS1/AS2:

if(resize) { attachMovie(new_mc_for_scale)};

Вообщем у вас какое то событие Resize ( или функция) при которой меняется масштаб - если он вдруг меняется, то удаляется 1 клип, на место него ставится 2й.
Все это происходит после зума, кстати проверь вложенный клип после зума будет ресайзится вообще или нет - если нет то че парится то! Аттачи все время тот же клип а потом удаляй и снова аттачи при ресайзе.

mooncar 13.09.2009 02:40

Оригинально, но...
А если у него плавно зум идет, например, с колесика, меняется масштаб раз 3-10 в секунду. На карте, допустим, 20-100 меток.
Значит в секунду от 60 до 1000 циклов удаления-аттача... Может, конечно, нагрузка и не такая сильная будет и соизмерима с перемасштабированием.
Но я все-таки остаюсь за вариант простого пересчета-передвижки координат меток во внешнем мувике.

in4core 13.09.2009 03:21

Но я все-таки остаюсь за вариант простого пересчета-передвижки координат меток во внешнем мувике.*** да это и так понятно мой друг. Но ТС то че делает придумывает велосипед! Вот мы ему и помогаем велосипед сделать! разными способами)))

mooncar 13.09.2009 10:56

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

iNils 13.09.2009 13:27

На момент скролл, я бы вообще снял битмап и матрицей менял его размеры, чем гонять ресурсоемкий вектор. После остановки скрола строил бы новую карту из вектора.

mooncar 13.09.2009 13:44

Цитата:

Сообщение от iNils (Сообщение 850432)
На момент скролл, я бы вообще снял битмап и матрицей менял его размеры, чем гонять ресурсоемкий вектор. После остановки скрола строил бы новую карту из вектора.

Так? :
1. Делаем один шаг масштабирования (например, колесико делает одну дельту)
2. Читаем битмапу карты.
3. Пересчитываем размеры битамапы с помощью матрицы с учетом дельты.
4. Отрисовываем из новой битмапы вектор в мувик обратно.

Такие циклы, также 3-10 раз в секунду будут ли менее ресурсоемкими?

iNils 13.09.2009 13:49

Не так. Вектор показываем только после n секунд после прекращения зума. Точное значение получаем в результате тестов. При чем, если позволяет технология, отрисовку вектора начинаем от центра зумирования (курсора).


Часовой пояс GMT +4, время: 20:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.