Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 3 > заливка фона, анимация


Автор: Ramirez 18.5.2010, 20:22
Доброго всем дня.

есть задача: пункт меню, при наведении курсора плавно заливается цветом (сверху вниз, или слева направо это не принципиально), при отведении плавно возвращается к прозрачному фону.

сделано:
Есть класс унаследованный от спрайта. Представляет собой пункт меню.
У него два потомка: объект Text  с надписью и еще один спрайт, который должен быть фоном, который динамически меняется при наведении.

Хочется чтобы фон менялся динамически: в исходном состоянии - его нет (прозрачный), при наведении - заливается неким цветом сверху вниз.

при наведении курсора создается listener на событие onEnterFrame, который в спрайте фона рисует залитый прямоугольник (.graphics.drawRect) и с каждым проходом его ресайзит до нужного размера, по достижении нужной заливки listener удаляется.

все работает, но вариант "рисования" заливки через .graphics.drawRect мне кажется неправильным. да и масштабирование не очень красиво выглядит.

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

заранее спасибо!

Автор: bars80080 19.5.2010, 00:33
не знаю, меня что-то чистый as3 не прельщает. очень полезная возможность в нём совмещать некий вручную нарисованный объект с классом. прям так и названо: отделение функционала от отображения


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


в коде это сделать в принципе тоже можно. там есть какие-то методы по генерации маски и градиента. но я тут уже не подскажу

Автор: nilrem 19.5.2010, 03:16
Ramirez, попробуйте вместо ресайза перезаливать прямоугольник градиентом с разными значениями alphas массива и изменять ratios

Автор: Ramirez 1.6.2010, 12:18
за идеи спасибо! 
пока остановился на варианте, программного создания маски.

Автор: Ramirez 7.7.2010, 13:40
вариант рисования "руками" привлекательнее, но что делать если какие-то параметры анимации зависят от внешних, динамических факторов?
в данном примере текст пункта меню формируется динамически в процесе выполнения ролика. как подогнать всю анимацию под неизвестную ширину текста?

писать код в кадрах?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)