|
|
|||||
Регистрация: Oct 2008
Адрес: Донецк
Сообщений: 26
|
Помогите разобраться с кнопками_mc
Здравствуйте. У меня есть 4-е кнопки-мув_клипы. На них реализовано увеличение при наведении и возврат в размер при отведении мыши (ROLL_OVER и ROLL_OUT). Подскажите, пожайлуста, как мне сделать, чтобы кнопка оставалась увеличеной до наведения мыши на другую кнопку. Я так понимаю, здесь не нужен ROLL_OUT и нужна какая-то проверка. Если можете, объясните по-популярней, как для новичков. Ну, или, закинте пример, пож-та, попробую разобраться сам.
Добавлено через 44 часа 14 минут Эй, флэшеры, неужели это настолько сложно, что никто не может ответить? Вопрос лежит три дня, просмотров куча, а ответов нет. Я думаю, это было бы интересно многим, и не только начинающим. Если лень писать пример, объясните хотя бы логику - последовательность действий. Спасибо. Последний раз редактировалось hetrus; 10.11.2008 в 01:57. |
|
|||||
Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
|
Ниже показан пример реализации вашей проблемы. Код написан на коленке, и отражает только логику того, как я бы сделал на вашем месте.
//массив btns хранит ссылки на эти 4 мувиклипа (btns[0], btns[1], btns[2], btns[3],) //вешаем на них 1 и тот же листенер for (var i: uint = 0; i < btns.length; i++) { btns[i].addEventListener(MouseEvent.MOUSE_OVER, enLarge); } private function enLarge(e:MouseEvent) { //простой пример увеличения, у вас навярняка тут будет tween или ваш код увеличения клипа e.target.scaleX = e.target.scaleY = 1.2; //проходим по вашим кнопкам и уменьшаем все за исключением той, на которую сейчас навели курсор for (var b: uint = 0; b < btns.length; b++) { //это код проверки и уменьшения всех остальных кнопок мувиклипов if (e.target != btns[b]) {btns[b].scaleX = btns[b].scaleY = 1} } } или передавать ссылку на кнопку, которая была под ROLL_OVER последней и уменьшить, а затем увеличить текущую (тогда можно и без массива) В общем как придумаете, так и будет. Последний раз редактировалось Xpb7; 10.11.2008 в 17:14. |
|
|||||
Регистрация: Oct 2008
Адрес: Донецк
Сообщений: 26
|
Спасибо, ИксПБ7! Вы МЕГА-человечище! Все получилось, заодно и разобрался с массивами. А для полного счастья, вы бы не могли подсказать (ну, или кто-нибудь другой из МЕГА-человеков), как мне убрать дерганье с увеличеной кнопки при повторном наведении на нее мыши. Как мне правильно снять проверку с выбранной (увеличенной) кнопки?
Последний раз редактировалось hetrus; 11.11.2008 в 13:50. |
|
|||||
Регистрация: Jun 2007
Сообщений: 374
|
Xpb7, пробегать по всему массиву не стоит
Вот правильный код (hetrus, дерганья тоже нет): var selectedButton:Sprite; for (var i:uint = 0; i < btns.length; i++){ btns[i].addEventListener(MouseEvent.Mouse_OVER, btnSizeControl); } private function btnSizeControl(e:MouseEvent):void{ var bt:Sprite = e.currentTarget as Sprite; bt.mouseEnabled = false; if (selectedButton) { selectedButton.scaleX = selectedButton.scaleY = 1; selectedButton.mouseEnabled = true; } selectedButton = bt; bt.scaleX = bt.scaleY = 1.2; } |
|
|||||
Регистрация: Oct 2008
Адрес: Донецк
Сообщений: 26
|
Спасибо огромное, s800_1. Код работает прекрасно, но с вашим увеличением:
У меня же твин и здесь все-равно дергается при повторном наведении мыши: new Tween(bt, "scaleX", Strong.easeOut,startScaleX,startScaleX+0.07,8,false); new Tween(bt, "scaleY", Strong.easeOut,startScaleY,startScaleY+0.07,8,false); new Tween(selectedButton, "scaleX",Strong.easeOut,selectedButton.scaleX,startScaleX,8,false); new Tween(selectedButton, "scaleY",Strong.easeOut,selectedButton.scaleY,startScaleY,8,false); Последний раз редактировалось hetrus; 13.11.2008 в 05:47. |
|
|||||
Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
|
Каурина твинером пользуйтесь:
http://tweener.googlecode.com/svn/tr...as3_flash9.zip Но там будет подергивание. Чтобы этого избежать, создайте переменную для каждого клипа, наример Когда движение началось, меняем её на true и не даём перезаписать движение, если она true, когда движение закончилось (для caurina tweener - на onComplete), меняем обратно на false; Последний раз редактировалось Xpb7; 14.11.2008 в 15:45. |
|
|||||
Регистрация: Oct 2008
Адрес: Донецк
Сообщений: 26
|
Спасибо, Xpb7. Попробую...
|
Часовой пояс GMT +4, время: 13:00. |
|
« Предыдущая тема | Следующая тема » |
|
|