Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.11.2008, 17:50
hetrus вне форума Посмотреть профиль Отправить личное сообщение для hetrus Найти все сообщения от hetrus
  № 1  
Ответить с цитированием
hetrus

Регистрация: Oct 2008
Адрес: Донецк
Сообщений: 26
По умолчанию Помогите разобраться с кнопками_mc

Здравствуйте. У меня есть 4-е кнопки-мув_клипы. На них реализовано увеличение при наведении и возврат в размер при отведении мыши (ROLL_OVER и ROLL_OUT). Подскажите, пожайлуста, как мне сделать, чтобы кнопка оставалась увеличеной до наведения мыши на другую кнопку. Я так понимаю, здесь не нужен ROLL_OUT и нужна какая-то проверка. Если можете, объясните по-популярней, как для новичков. Ну, или, закинте пример, пож-та, попробую разобраться сам.

Добавлено через 44 часа 14 минут
Эй, флэшеры, неужели это настолько сложно, что никто не может ответить? Вопрос лежит три дня, просмотров куча, а ответов нет. Я думаю, это было бы интересно многим, и не только начинающим. Если лень писать пример, объясните хотя бы логику - последовательность действий. Спасибо.


Последний раз редактировалось hetrus; 10.11.2008 в 01:57.
Старый 10.11.2008, 16:53
Xpb7 вне форума Посмотреть профиль Отправить личное сообщение для Xpb7 Найти все сообщения от Xpb7
  № 2  
Ответить с цитированием
Xpb7

Регистрация: 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.
Старый 11.11.2008, 03:34
hetrus вне форума Посмотреть профиль Отправить личное сообщение для hetrus Найти все сообщения от hetrus
  № 3  
Ответить с цитированием
hetrus

Регистрация: Oct 2008
Адрес: Донецк
Сообщений: 26
Спасибо, ИксПБ7! Вы МЕГА-человечище! Все получилось, заодно и разобрался с массивами. А для полного счастья, вы бы не могли подсказать (ну, или кто-нибудь другой из МЕГА-человеков), как мне убрать дерганье с увеличеной кнопки при повторном наведении на нее мыши. Как мне правильно снять проверку с выбранной (увеличенной) кнопки?


Последний раз редактировалось hetrus; 11.11.2008 в 13:50.
Старый 11.11.2008, 05:16
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 4  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Xpb7, пробегать по всему массиву не стоит

Вот правильный код (hetrus, дерганья тоже нет):
Код AS3:
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;
}

Старый 11.11.2008, 13:20
hetrus вне форума Посмотреть профиль Отправить личное сообщение для hetrus Найти все сообщения от hetrus
  № 5  
Ответить с цитированием
hetrus

Регистрация: Oct 2008
Адрес: Донецк
Сообщений: 26
Спасибо огромное, s800_1. Код работает прекрасно, но с вашим увеличением:
Код AS3:
selectedButton.scaleX = selectedButton.scaleY = 1;
bt.scaleX = bt.scaleY = 1.2;
У меня же твин и здесь все-равно дергается при повторном наведении мыши:
Код AS3:
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.
Старый 14.11.2008, 15:36
Xpb7 вне форума Посмотреть профиль Отправить личное сообщение для Xpb7 Найти все сообщения от Xpb7
  № 6  
Ответить с цитированием
Xpb7

Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
Каурина твинером пользуйтесь:
http://tweener.googlecode.com/svn/tr...as3_flash9.zip

Но там будет подергивание. Чтобы этого избежать, создайте переменную для каждого клипа, наример
Код AS3:
var tweening: Boolean = false;
Когда движение началось, меняем её на true и не даём перезаписать движение, если она true, когда движение закончилось (для caurina tweener - на onComplete), меняем обратно на false;


Последний раз редактировалось Xpb7; 14.11.2008 в 15:45.
Старый 14.11.2008, 17:57
hetrus вне форума Посмотреть профиль Отправить личное сообщение для hetrus Найти все сообщения от hetrus
  № 7  
Ответить с цитированием
hetrus

Регистрация: Oct 2008
Адрес: Донецк
Сообщений: 26
Спасибо, Xpb7. Попробую...

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:00.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.