![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 205
|
Есть простенькое меню, 5 кнопок и 5 же всплывающих подменю.
Из-за того, необходимо будет на эти всплывающие подменю ставить SetInterval, то скрипт нужен общий на все кнопки. Пока пусть только будет появление и пропадание по клику(задаём клик переменной k). Bt - кнопка главного меню, submenu - соответственно подменю. Скрипя мозгами, наваяла это, но, естественно, не работает. |
|
|||||
|
Модрон-ветеринар
|
В конце цикла i становится равным 6 и это значение будет использоваться во всех обработчиках.
Нужно так:
__________________
Идите первым! |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 205
|
спасибо. работает =)
А теперь вот так: stop(); k=0; for(i=1; i<=5; i++) { var item:MovieClip = this['bt'+i]; item.i = i; //"запоминаем" номер item.onRelease = itemOnRelese; //назначаем обработчк item.onRollOut = itemOnRollOut; } function itemOnRelese() { var i:Number = this.i; //извлекаем номер if (k!=1) {trace(k); for (b=1; b<=5; b++) { if(b!=i){_root["submenu_"+b].gotoAndStop(37);} else{ _root["submenu_"+b].gotoAndPlay(2); timer(i); trace("return"+inter); } k=1;} } else { trace(k); timeroff(i, inter); _root["submenu_"+i].gotoAndPlay(21); k=0; } } function itemOnRollOut() { k=0; } function timer(i) { trace (i); inter = setTimeout(go,5000,i); return(inter); } function timeroff(i, inter){trace(i+" off "+inter); clearTimeout(inter)} function go(i){ trace("go"); _root["submenu_"+i].gotoAndPlay(21); k=0;} Последний раз редактировалось Маруська; 01.07.2013 в 08:50. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 205
|
primer.rar
Вот исходник CS4 |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 205
|
вопрос всё ещё открыт =(
|
|
|||||
|
Мутный код. Сделайте ОДНУ кнопк и ОДНО подменю.
Упростите всё это. К тому же ваш исходник у меня не открывается. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 205
|
когда одна кнопка и одно подменю - всё работает =)
Добавлено через 29 минут stop(); k=0; //индикатор нажатия на кнопку. по первому клику на кнопку меню появляется, по повторному - исчезает for(i=1; i<=5; i++) //кнопок всего 5 { var item:MovieClip = this['bt'+i]; item.i = i; //"запоминаем" номер item.onRelease = itemOnRelese; //назначаем обработчик на клик item.onRollOut = itemOnRollOut; //назначаем обработчик на отведение мыши } function itemOnRelese() { var i:Number = this.i; //извлекаем номер if (k!=1) //проверяем, что кнопка нажата впервые {for (b=1; b<=5; b++) //цикл на выбор субменю { if(b!=i){_root["submenu_"+b].gotoAndStop(37);} //закрываем все открытые субменю, не относящиеся к нажатой кнопке else{ //выполняется для субменю для нажатой кнопки _root["submenu_"+b].gotoAndPlay(2); timer(i) //задаём задержку для дальнейшего проигрывания субменю } k=1; //меняем индекс - кнопка один раз нажата } } else {//кнопка нажата повторна timeroff(i, inter); //удаляем задержку для текущего субменю _root["submenu_"+i].gotoAndPlay(21);//закрываем субменю k=0; //возвращаем индикатор - кнопка не нажата } } function itemOnRollOut() { k=0;//возвращаем индикатор - кнопка не нажата } function timer(i) { inter = setTimeout(go,5000,i);//вызываем закрытие субменю после задержки return(inter); } function timeroff(i, inter) { clearTimeout(inter) } function go(i) { _root["submenu_"+i].gotoAndPlay(21); k=0;// после автоматического закрытия меню по задержке, восстанавливаем индикатор - кнопка не нажата } По первому клику на кнопку таймер не срабатывает. после того, как кнопку закрыть и снова открыть кликом - таймер начинает работать. в чём проблема? Добавлено через 2 часа 6 минут Вот так чудно работает на одну кнопку. Но как только добавляю условия на обработку других кнопок - всё кубарем =( stop(); k=0; for(i=1; i<=5; i++) { var item:MovieClip = this['bt'+i]; item.i = i; //"запоминаем" номер item.onRelease = itemOnRelese; //назначаем обработчк } function itemOnRelese() { var i:Number = this.i; //извлекаем номер if (k!=1) { for (b=1; b<=5; b++) {if (b==i){ _root["submenu_"+b].gotoAndPlay(2); timer(i); } k=1; } } else { timeroff(i, inter); _root["submenu_"+i].gotoAndPlay(21); k=0; } } function timer(i) { inter = setTimeout(go,5000,i); return(inter); } function timeroff(i, inter){clearTimeout(inter)} function go(i){ _root["submenu_"+i].gotoAndPlay(21); k=0; } Всем спасибо. Нарисовала блок-схему - выявила проблему. Этот скрипт работает - если вдруг кому-то надо stop(); k=0; for(i=1; i<=5; i++) { var item:MovieClip = this['bt'+i]; item.i = i; //"запоминаем" номер item.onRelease = itemOnRelese; //назначаем обработчк item.onRollOut = itemOnRollOut; } function itemOnRelese() { var i:Number = this.i; //извлекаем номер if (k!=1) { for (b=1; b<=5; b++) {if (b==i){ _root["submenu_"+b].gotoAndPlay(2); timer(i); } else {_root["submenu_"+b].gotoAndStop(40);} k=1; } } else { timeroff(i, inter); _root["submenu_"+i].gotoAndPlay(21); k=0; } } function timer(i) { clearTimeout(inter) inter = setTimeout(go,5000,i); return(inter); } function timeroff(i, inter){clearTimeout(inter)} function go(i){ _root["submenu_"+i].gotoAndPlay(21); k=0; } function itemOnRollOut() { k=0; } Последний раз редактировалось Маруська; 03.07.2013 в 14:56. |
|
|||||
|
Адрес , по которому высылаются эшелоны с ящиками пива можно найти в моем профиле.....
|
|
|||||
|
Регистрация: Feb 2012
Сообщений: 205
|
был бы повод. Ведь Вы так мне помогли.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|