Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Код для нескольких кнопок (http://www.flasher.ru/forum/showthread.php?t=90873)

Icida 19.01.2007 18:24

Код для нескольких кнопок
 
Можно ли написать код сразу для нескольких кнопок. В таком роде: если курсор не над одной из, например трёх, кнопок, то перейти к такому-то кадру? И где его писать. Дело вот в чем. Сделала выпадающее меню. Все уроки в сети и даже в книжке по сути одинаковы, т.е. чтобы менюшка скрывалась когда курсор не над ней, делаем фоновую кнопку и пишем в ней rollOver. Все работает прекрасно, не жалуюсь. Но когда ролик проигрывается, курсор определяет эту фоновую кнопку и становится рукой, что в моем случае очень нежелательно. Была мысль заменять в этой области курсор, но мне кажется это както неправильно, натянуто.
В общем, буду благодарна за любую помощь!

combo 19.01.2007 20:19

Код:

var buttons:Array = [button_ok, button_go, button_reset];

function my_func() {
  trace ("щелкнута " + this);
};
for (i in buttons) {
        buttons[i].onPress = my_func;
}

пиши всё в одном слое.

Мыкыта 19.01.2007 21:09

необязательно кнопку рисовать можно прям на мувик rollOver писать

Icida 19.01.2007 21:37

Спасибо!
Вот только если именно для меню.. Когда с первой кнопки сходит курсор, сразу проигрывается первый кадр, т.е. не успевает понять что есть следующая кнопка и обработать её... Наверно по другому не получится.. А есть ещё способы?

Icida 19.01.2007 21:44

Мыкыта, я как раз это и сделала. И все вроде хорошо) Но если с этого меню курсор увести резко, то нифига не срабатывает rollOver. Хотелось бы придумать чтото по красивше)

Мыкыта 20.01.2007 00:16

поробуй еще воть такое:
Код:

on(releaseOutside, rollOut)
а воооще на каждой кнопке
прописывают

rollOver, releaseOutside, rollOut и release

Icida 20.01.2007 01:00

Спасибо! Ща посмотрю, что пригодится)

Llex3D 20.01.2007 01:19

Если надо что-бы меню не закрывалось при переходе на другую кнопку, то можно сделать через 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, значит мышка находится не на меню, и его можно смело закрывать, иначе, мышка находится на другой кнопке, и меню нам ещё пригодиться.
Вот, по идее так.. :)

Icida 20.01.2007 14:59

Остановилась на таком решении:
четыре фунции

функция, выполняющаяся при наведении курсора мыши на кнопку

Код:

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]);
        }
}

Все работает правильно


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

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