Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы (http://www.flasher.ru/forum/forumdisplay.php?f=10)
-   -   Помогите!!! Возникла проблемма :-( (http://www.flasher.ru/forum/showthread.php?t=23396)

Анна С. 22.11.2001 16:53

Помогите!!! Возникла проблемма :-(
 
Здрасти всем!!!
Возникла проблемка с меню, замучилась уже, но как ее решить - не могу найти. Видимо что-то со скриптами.
Есть кнопки со всплывающими менюшками. Так вот, когда быстро мышкой проводишь от одной кнопки к другой, то эти менюшки (которые всплыли) не убираются...и появляется рядом еще одна менюшка.
Подскажите, как исправить этот глюк.

netstuff 22.11.2001 17:00

У меня в своё время это возникало по следующей причине:

была менюшка, на rollOver появлялась и на rollOut убиралась. Сам процесс появления-пропадания был "нарисован" (т.е. был реализован не программным путем). Соответственно на первом кадре был stop(); -> на пятом тоже stop() -> между ними MotionTwin. С 5-ого по 10 - обратно, и на десятом gotoAndStop(1).
Так вот весь трабл заключался в том, что реакция на наведение выглядела так:
on(rollOver) { gotoAndPlay(1) }, а на самом деле надо было gotoAndPlay(2) - иначе перекрывался со stop().
Спасибо Fisher'у - разъяснил...

Короче, если хочешь, кинь исходник, посмотрю.

Анна С. 22.11.2001 17:13

Вложений: 1
Что-то все-равно не получается....наверное не так поняла :(
Чичас пришлю исходник

Forest 22.11.2001 19:23

2Анна С.:
 
можно написать простой сборщик таких менюшек :)

заносишь в массив адреса всех таких менюшек и с определенной периодичностью(например раз в секунду) его просматриваешь
и для каждой активированной менюшки проверяешь MovieClip.hitTest
если тест провален - закрываешь менюшку

Анна С. 23.11.2001 12:24

А поконкретнее нельзя? :)

Forest 23.11.2001 16:30

куда уж конкретней
я описал алгоритм
конкретней - только пример

Forest 23.11.2001 16:44

пример:
 
заводишь массив всех таких менюшек:
_root.mMenu = new Array(_root.menu1_adress, _root.menu2_adress, ..., _root.menuN_adress);

делаешь мувик
в нем делаешь столько кадров, сколько = период опроса / длительность такта
в первый кадр помещаешь код опроса менюшек из массива:

for(i = 0; i < _root.mMenu.length; i++)
{
if(!_root.mMenu[i].hitTest(_root.mMenu[i]._xmouse, _root.mMenu[i]._ymouse,true)
{привести меню в неактивированное состояние
например:
_root.mMenu[i].gotoAndStop(1);
}
}

netstuff 23.11.2001 16:52

Понимаешь ли, Аня.
Здесь не дают исходников, здесь дают знания (хотя и иногда исходники, для примера). Исходники дают в разделе "Исходники".

Посмотрел твой исходничек. Прибалдел. Так до конца и не разобрался.

Вообщем по-быстрому объясню, как тебе лучше решить такую задачу.

1. Заносишь все названия кнопок в массивы:
button1Array = new Array(n);
button1Array[0] = "sometext_1";
button1Array[1] = "sometext_2";
...
button1Array[n] = "sometext_n+1";

таким же образом для 2 и 3 кнопок.

2. Рисуешь макет (экземпляр) основной кнопки и помещаешь его в поле мувика. Назначаешь ему имя "main_1". Далее дублируешь эту кнопку 2 раза:
duplicateMovieClip("_root.main_1", "main_2", 2);
duplicateMovieClip("_root.main_1", "main_3", 3);
_root.main_2._x = _root.main_1._x + 100;
_root.main_2._y = _root.main_1._y;
_root.main_3._x = _root.main_2._x + 100;
_root.main_3._x = _root.main_1._y;

3. Пишешь функции реагирования на мышь:
function overMouse () {
doSomeAction();
}

function outMouse () {
doSomeAction();
}

function clickMouse () {
doSomeAction();
}

где doSomeAction() - определенные действия.

4. На первой (родительской) кнопке прописываешь:
on(mouseOver) {
_parent.overMouse();
}

... и так далее для остальных действий.

5. Рисуешь кнопку подменю и проводишь с ней все вышеперечисленные действия с поправкой на её функциональные особенности.

В принципе всё - остальное сама с помощью хелпа...

[pS] Для того чтобы под-меню не убиралось лучше ипользуй таймер, а не огромную кнопищу...

Больше программируй, а не рисуй...

Forest 23.11.2001 17:21

2netstuff:
 
ну ты и гонщик :D :D :D

netstuff 23.11.2001 17:25

???
 
:rolleyes:


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

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