![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 3
|
Привет! Давно занимался флешем, все это знал и делал легко, но теперь сталкиваюсь с такими вещами, которые голову ломают еще как, а вроде бы простые.
Хотел сделать красивую кнопку с кое-какой анимацией. Не получилось. Решил создать сзади кнопки белое свечение, чтобы оно появлялось и исчезало при наведении\отведении курсора. В чем суть проблемы. Я сделал код, собрав по кускам из туториалов и вики, и на rollout клип shine не исчезает. При этом, если то же самое сделать но с nextFrame и prevFrame (это если анимация исчезания сделана в клипе а не использован _alpha), то часто все работает (но и тут проблема - если быстро туда сюда по кнопке - происходит затык и обе функции начинают поочередно nextFrame и prevFrame делать и анимация заикается на одном месте) shine._alpha = 0; function rollout() { if (shine._alpha>0) { shine._alpha -= 16; } else { clearInterval(myInterval); } } function rollover() { if (shine._alpha<100) { shine._alpha += 16; } else { clearInterval(myInterval); } } this.onRollOver = function() { myInterval = setInterval(rollover, 20); }; this.onRollOut = function() { myInterval = setInterval(rollout, 20); }; Нашел тут кое-что. http://www.alexchinneck.com/ (если клацнуть на эту картинку) Тут внизу меню Work. Как оно выезжает, без глюков, как угодно дергай его, наводи на него - так плавно хотелось бы появление исчезание объекта (или вперед-назад по кадрам в анимации). Последний раз редактировалось VVWind; 13.07.2012 в 03:55. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 128
|
Посмтрел ваш код. На что у вас this указывает? Вместо this напишите конкретный адрес, например, shine.onRollOver - все должно заработать.
|
|
|||||
|
1. Объявите myInterval в основном теле программы. В самом начале, условно говоря.
var myInterval; 2. В теле функций пишите _root.myInterval При этом обращения гарантированно будут производиться к той самой одной и той же переменной интервала. 3. Нафиг он тут вобще нужен. // OBJ - имя клипа. // mark - клип внутри клипа, который изображает из себя свечение. Типа подложка с glow. var alphaSpeed = 1; funtion initButton( OBJ ) { OBJ.mark._alpha = 0; OBJ.mark.onRollOver = function(){ delete this.onEnterFrame this.onEnterFrame = function(){ this._alpha += alphaSpeed*2; // Дабы появлялся быстрее, чем затухает if ( this._alpha >= 100 ){ this._alpha = 100; delete this.onEnterFrame } } } OBJ.mark.onRollOut = OBJ.mark.onReleaseOutside = function(){ delete this.onEnterFrame this.onEnterFrame = function(){ this._alpha -= alphaSpeed; if ( this._alpha <= 0 ){ this._alpha = 0; delete this.onEnterFrame } } } OBJ.mark.onRelease = function(){ trace("button clicked"); } } |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 3
|
Большое спасибо, очень помогло, все работает!
![]() |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 3
|
Странно что сообщение не отправилось.
Огромное спасибо вам, dark256! А скажите еще, если можно, как сделать поочередное появление объектов друг за другом? Вот у меня есть 2-3 кнопки этих, и функция для появления их. Изначально их _alpha = 0, естественно. Вот функция появления: function appear(obj:Object) { delete obj.onEnterFrame; obj.onEnterFrame = function() { obj._alpha += 6; if (obj._alpha >= 100) { obj._alpha = 100; delete obj.onEnterFrame; } }; } Как мне сделать так, чтобы лишь ПОСЛЕ выполнения appear(button1) началось выполнение к примеру appear(button2)? Конечно все аппеары придется вручную прописывать, но оно того, думаю стоит. |
|
|||||
|
Да! Действительно так гораздо лучше. Спасибо
![]() |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Это мелочи, на самом деле
![]() Если зажали курсор мыши на клипе и уводим его с него, то я думаю, что будет правильнее, если клип начнет исчезать (переходить в неактивное состояние) как только курсор мыши покинул его, а не тогда, когда отпустили мышь. Потому, что (классически) действие на клик (onRelease) по кнопке подразумевает нахождение курсора на клипе, а не в произвольной области, после того, как зажали на курсор и увели, а значит и нет смысла поддерживать состояние нажатия, на момент, когда уводим курсор с клипа. Ох, криво объясняю, надеюсь понятно будет. Хотя, с другой стороны, с виндоусе по вашему варианту сделано.
__________________
hauts.ru |
|
|||||
|
Почитал, провел эксперимент - да. Замечательно. Спасибо
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|