Просмотр полной версии : Код для нескольких кнопок
Можно ли написать код сразу для нескольких кнопок. В таком роде: если курсор не над одной из, например трёх, кнопок, то перейти к такому-то кадру? И где его писать. Дело вот в чем. Сделала выпадающее меню. Все уроки в сети и даже в книжке по сути одинаковы, т.е. чтобы менюшка скрывалась когда курсор не над ней, делаем фоновую кнопку и пишем в ней rollOver. Все работает прекрасно, не жалуюсь. Но когда ролик проигрывается, курсор определяет эту фоновую кнопку и становится рукой, что в моем случае очень нежелательно. Была мысль заменять в этой области курсор, но мне кажется это както неправильно, натянуто.
В общем, буду благодарна за любую помощь!
var buttons:Array = [button_ok, button_go, button_reset];
function my_func() {
trace ("щелкнута " + this);
};
for (i in buttons) {
buttons[i].onPress = my_func;
}
пиши всё в одном слое.
необязательно кнопку рисовать можно прям на мувик rollOver писать
Спасибо!
Вот только если именно для меню.. Когда с первой кнопки сходит курсор, сразу проигрывается первый кадр, т.е. не успевает понять что есть следующая кнопка и обработать её... Наверно по другому не получится.. А есть ещё способы?
Мыкыта, я как раз это и сделала. И все вроде хорошо) Но если с этого меню курсор увести резко, то нифига не срабатывает rollOver. Хотелось бы придумать чтото по красивше)
поробуй еще воть такое:
on(releaseOutside, rollOut)
а воооще на каждой кнопке
прописывают
rollOver, releaseOutside, rollOut и release
Спасибо! Ща посмотрю, что пригодится)
Если надо что-бы меню не закрывалось при переходе на другую кнопку, то можно сделать через setInterval
Как писал combo, присваиваешь всем кнопкам функции на onRollOver onRollOut и onPress ( хотя лучше onRelease).
а вот в событии он onRollOver делаешь всё что тебе надо, и заодно ставишь переменную
_root.menuSelected = true;
в событии onRollOut опять же выполняешь все опперации что надо и заодно запускаешь
checkInterval = setInterval(function(){
if (!_root.menuSelected){
clearInterval(checkInterval) // но у меня иногда не срабатывает, может как всегда каряво вызываю
_root.menuSelected = false;
// закрываем меню
}, 100);
Данный код должен проверять, если menuSelected = false, значит мышка находится не на меню, и его можно смело закрывать, иначе, мышка находится на другой кнопке, и меню нам ещё пригодиться.
Вот, по идее так.. :)
Остановилась на таком решении:
четыре фунции
функция, выполняющаяся при наведении курсора мыши на кнопку
function rolling_check_in(){
_root.menuSelected = true;
}
Функция, выполняющаяся когда курсор уходит с кнопки
function rolling_check() {
_root.menuSelected = false;
checkInterval = setInterval(check1, 300);
_root.ch[i] = checkInterval; // массив содержащий Id всех интервалов.
i++;
}
Функция, проверяющая ушел ли курсор со всех кнопок или нет:
function check1(){
if (!_root.menuSelected){
stopAllInterval(_root.ch);
menuSelected = false;
gotoAndStop(1)// закрываем меню
}
}
Функция, останавливающая все интервалы(все SetInterval())
function stopAllInterval(arr:Array){
for (c in arr){
clearInterval(arr[c]);
}
}
Все работает правильно
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.