PDA

Просмотр полной версии : Принцип перерисовки объектов


Dub_Alex
22.03.2006, 13:56
В приложении маленькая программа. Суть следующая: есть два квадрата (каждый находится в отдельном слое), когда наводишь мышь на синий квадрат, он растягивается, убираешь мышь - он сжимается.
Вопрос в следующем: когда синий квадрат растягивается (сжимается), зеленый квадрат при этом перерисовывается или нет? Если да, то можно эту перерисовку отменить? Если нельзя отменить, то можно указать координаты частички зеленого квадрата для перерисовки, на которую накладывается синий квадрат, а остальную часть не перерисовывать?

Homo Sapiens
22.03.2006, 14:32
По идее не должен

KUZEN
22.03.2006, 18:08
А помоему перерисовывается вся область флешки и если бы была возможность указывать области для перерисовки, было бы просто замечательно ...

Dub_Alex
23.03.2006, 09:51
KUZEN, а если вместо квадратов "увесистая" картинка и через простое интернет-соединение все тормозит из-за постоянной перерисовки. Как быть?

Dub_Alex
23.03.2006, 15:54
А есть ли какие-нибудь обходные пути? Т.е. даже если все перерисовывается постоянно, может есть какая-то оптимизация? Мне предлагали уменьшить картинку (это отпадает, уменьшать дальше некуда), сжать ее (я не понял как это делается, может кто-нибудь пояснит). Я писал уже несколько раз свой вопрос на форуме, но советы других пользователей мне помогли лишь частично. Вообще я делаю карту Российской Федерации. Очень похожая по смыслу карта есть на сайте Мегафона http://www.megafon.ru/main/zona/ (на данной странице нужно выбрать ссылку "Карты зоны присутствия 'Мегафон' в РФ"). У них все работает нормально, а меня тормозит, хотя карта у них довольно четко прорисована.

motor4ik
23.03.2006, 16:26
перерисовывается все, причем даже если слоев много, ничего не видно, тормозить будет ужасно :-)

Dub_Alex
23.03.2006, 16:50
ну а это все решаемо каким-то способом или нет? На мегафоне как-то ведь сделали? И еще: сжатие-это которое в меню file->publish settings на закладке flash галочка напротив compress movie что ли?

KUZEN
24.03.2006, 00:27
Собственно соединение играет роль только при загрузке файла и тормозов от него не будет ... а про что именно ты говоришь на мегафоне, я там ничего не нашёл ?!

KUZEN
24.03.2006, 00:28
перерисовывается все, причем даже если слоев много, ничего не видно, тормозить будет ужасно :-)
Поэтому нужно делать visible = false; либо удалять не нужные клипы когда они не нужны ...

Homo Sapiens
24.03.2006, 01:03
Насколько я помню C++, там была есть функция MFC invalidateRect, которая помечает область окна программы недействительной и требующий перерисовки. Кроме того, в 8 Flash же можно подсветить перерисовываемые элементы. Так что вряд ли перерисовывается всё. Мне кажется, что основные затраты идут на поддержание в памяти объектов.

Homo Sapiens
24.03.2006, 01:05
Я как-то делал тестовый мультик, где было много тяжёлых объектов (Фильтры, маски, прозрачность), но они находились вне экрана, то есть, по идее, не перерисовывались. С каждым кадром добавлялась новая копия того объекта и Flash тормозил всё сильнее и сильнее.

Dub_Alex
24.03.2006, 10:16
Основу составляет картинка из CorelDraw, которую я через буфер перенес на flash. А если я нарисую эту картинку средствами flash (обведу контуры, залью области и т.д. а потом удалю оригинал и у меня останется довольно точная копия, нарисованная с помощью инструментов flash), ролик меньше будет весить или существенных изменений это не принесет?

KUZEN
24.03.2006, 19:25
Лучше не через буфер , а через импорт ...

davgur
24.03.2006, 22:31
я во флеше чайник но мб можно разбить большой клип и погружать по надобности?

Madasan
25.03.2006, 15:16
В 8 флэше есть полезное св-во MovieClip.cacheAsBitmap ;)
если задать true, то объкт будет представлен как bitmap вместо vector, это заметно сокращает затраты ресурсов на перерисовку, а при изменении размера объекта, он просто создается заново вместо масштабирования.