PDA

Просмотр полной версии : Filters, cacheAsBitmap и неработающие кнопки


Firefoxer
09.11.2008, 22:23
На сцене мувик, в мувике: пара кадров с графикой (первый пустой!), кнопка (пустая! только область для hit'a есть) для перехода по кадрам:

on (rollOver) {
gotoAndStop(2)
}
on (rollOut) {
gotoAndStop(1)
}

Без фильтров все работает нормально, т.е. при наведении клип переходит на второй кадр. После подключения фильтров (я использовал Adjust color) любым способом, т.е. в среде или рантайме, кнопка перестает работать, даже handcursor не появляется.
Вот еще что: если первый кадр мувика заполнить графикой или хотя бы в первом кадре кнопки нарисовать что-то, то все работает.

Почитал описание filters от адоби, ничего не понял.

If a movie clip has an associated filter, it's marked to cache itself as a transparent bitmap when the SWF file loads. As long as the movie clip has at least one filter applied to it, Flash Player caches the movie clip as a bitmap at runtime by forcing the cacheAsBitmap property to be true. The cached bitmap is used as a source image for the filter effects. Each movie clip usually has two bitmaps: one bitmap is the original unfiltered source movie clip, the second bitmap is the final image after filtering. If you do not change the appearance of the movie clip at runtime, the final image does not need to update, which helps improve performance.
Вроде бы пишут что-то мувиклип кэшируется, т.е. переводится в картинку для поддержания производительности. Свойство casheAsBitmap действительно стоит в "true", причем сбросить его не удается. Так почему же, если заполнять первый кадр мувиклипа, все работает? флеш считает, что происходит "change the appearance of the movie clip at runtime"?

flash33
11.11.2008, 01:18
Не имейте привычку создавать кнопку с пустым содержимым Up, Over. Если хотите "пустоты" в первом кадре - поместите прозрачный клип. И еще - как может появится хэнд над пустым содержимым?
ЗЫ Да, и еще самое главное - не суйте управление (кнопку) и клип для трансформации в один контейнер! Так вы будете трансформировать и саму кнопку, а это вам надо? Поместите кнопку на _root над клипом movie и делайте с ним что хотите. А кнопу заполните прозрачным содержимым. Вообще то можно обойтись без кнопки - учите AS2

Firefoxer
11.11.2008, 10:27
Обычно код конечно лучше цеплять к самому мувику, а не к кнопке в нем. Это правда. Но еще раз, почему я так сделал: вариант с прозрачным содержимым первого кадра не на много лучше на мой взгляд (если есть явные преимущества, хотел бы услышать), а пустые кнопки с размеченной hit'овой областью хотя бы видно на сцене в среде разработке из-за зеленой подсветки.
И еще - как может появится хэнд над пустым содержимым?
Если в первом кадре мувика ставить только такую кнопку, то хэнд как раз и появляется.
Так вы будете трансформировать и саму кнопку, а это вам надо?
Да, именно это мне и надо. Мувик - элемент интерфейса с включенным 9-slice scaling'ом. При транчформации мувика, и область реагирования должна изменяться.

flash33
11.11.2008, 10:49
Упростите вашу задачу, сдается мне вы перегрузили графикой ваш клип, уже неясно где кнопка, где клип трансформации, где что... Вынесите скрипт на _root, не пользуйтесь on(rollOver)... - это каменный век! Используйте ваш клип сам в качестве кнопки обозначив ему обработчики событий (movie.onRollOver и т. д) Ну и основные принцыпы во втором посте. Ваши проблемы от плохого знания AS2

Firefoxer
11.11.2008, 12:00
Уже давно все переделал. Но факт с filters остается фактом, хотел услышать вменяемое теор. обоснование, если таковое у кого-то имеется.
flash33, спасибо за наставление. Описал наверное неудачно, хотя структура элементарна, достаточно только приаттаченный файл открыть и увидеть. Ну и про "кнопку с хит-областью + хэнд" - надеюсь Вы услышали, пусть это и может быть бесполезно при создании "правильного" проекта.

flash33, может заглянете на огонек в другую мою тему в этом разделе, а то там пока глухо?