PDA

Просмотр полной версии : Появляющаяся менюшка.


isangaley
23.08.2007, 23:20
Помогите плиз. У меня есть область при наведении мыши на которую должна в другом месте появляться менюшка. Пробовал on (rollOver), но там при наведении на менюшку она сразу исчезает, а эта невидимая область - есть прозрачная кнопка и она естественно все перекрывает. Помогите сделать так чтобы я мог указать координатами например когда мышь заходит в определенный сектор координат то появлялась меню. Или покажите какие другие способы есть.:wacko:

udaaff
24.08.2007, 00:13
Help > Flash Samples > ActionScript > XML menu
On Windows, browse to boot drive\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\XML_Menu.

Как раз то, что тебе надо.

Wolsh
24.08.2007, 00:18
Конечно можно координатами прописать. Только из них твоя мышка тоже уйдет :) Тут как просто все ни выглядит, всё же есть логика, которую надо продумать. Вот у тебя область - прозрачная кнопка (можешь смело сделать ее мувиклипом - кнопки уже давно никто не делает, одна морока с ними). Ты навел мышку - гдето другой мувиклип (меню) стал виден. Закрепляем в коде

my_menu._visible = false
my_hitarea.onRollOver = function(){
my_menu._visible = true
}
После этого ты спокойно можешь тащить мыша к меню - оно уже не пропадет. А вот должно ли оно когда-нибудь опять стать невидимым?

isangaley
24.08.2007, 01:21
Спасибо. Да мне надо чтоб он снова становился невидимым. Другими словами: я сделал видеоплеер, при наведении мыши на которого я хотел бы чтоб появлялось меню с кнопками плей громкость и т д, тоесть должен появляться мувиклип в котором все эти кнопки. А насчет xml я не думаю что мне это подойдет.

isangaley
24.08.2007, 01:22
Конечно можно координатами прописать. Только из них твоя мышка тоже уйдет :) Тут как просто все ни выглядит, всё же есть логика, которую надо продумать. Вот у тебя область - прозрачная кнопка (можешь смело сделать ее мувиклипом - кнопки уже давно никто не делает, одна морока с ними). Ты навел мышку - гдето другой мувиклип (меню) стал виден. Закрепляем в коде

my_menu._visible = false
my_hitarea.onRollOver = function(){
my_menu._visible = true
}
После этого ты спокойно можешь тащить мыша к меню - оно уже не пропадет. А вот должно ли оно когда-нибудь опять стать невидимым?
Да я точно также делал, и вот именно что если убрать мышь с невидимой кнопки, то меню исчезнет, вот в чем моя проблема, целый день парился...

udaaff
24.08.2007, 01:50
Я бы воспользовался свойством MovieClip'а trackAsMenu в данном случае.

Wolsh
24.08.2007, 02:00
Кудаж оно исчезнет, если ему команды не давали?
Я так и не понял, получилось у Вас или нет.

isangaley
24.08.2007, 14:01
Оно появляется то появляется, но мне же надо чтоб оно исчезало когда я мыш убираю с области. ну я добавил туда код чтоб исчезала но когда с области мыш уводишь вот она и исчезает вот и проблема, а если этим мувиклипом(невидимой кнопкой)закрыть мою менюшку, то на кнопки нажать уже нельзя будет. Я уже это писал и как ты говорил уже до этого делал, поэтому пишу сюда.

track as menu можно же только у кнопки сделать. ща попробую что-нибудь

я пробовал разобраться в хелпе, но тщетно. слишком все непонятно. Это такое частое явление - появление меню и не могу сделать...

Wolsh
24.08.2007, 19:10
Да потому что наводите Вы на одно, а убираете - с другого. Я же советовал над логикой подумать, а так можно бесконечно по кругу ходить.
Навели на хитарею - меню появилось
убрали С МЕНЮ - меню пропало
закрепляйте в коде.

track as menu можно делать у клипов. Кнопки вообще давно уже вчерашний день.

isangaley
24.08.2007, 22:16
Да спасибо, я все думал думал как же сделать, а про то что с меню можно действовать не подумал. Но оно в некоторых местах моргает 1 раз почему-то(например когда на кнопку перевожу), а охота чтобы все было четко. Интересно почему координатами нельзя сделать, ведь в области координат если мышь будет ходить то по-идее должно быть все норм.

Wolsh
25.08.2007, 16:08
Конечно можно, только на самом деле очень неудобно.
При наведении на хитареа делаете меню видимым и активируете слежение за мышью - например, заводите листенер, который на событие onMouseMove запускает обработчик, проверяющий координаты мыши. И как только мышь ушла из координат, обработчик делает меню невидимым и удаляет листенер.

var MenuMouseListener:Object = new Object();
hitarea_mc.onRollOver = function(){
menu_mc._visible = true;
Mouse.addListener(MenuMouseListener);
}
MenuMouseListener.onMouseMove = function(){
if (_xmouse < 10 | _xmouse > 150 | _ymouse < 50 | _ymouse > 300){
menu_mc._visible = false;
Mouse.removeListener(MenuMouseListener);
}
}

Но это если хитареа совпадает с областью меню и находится под ним
Т.е. проблема с координатами в том, что если Вы наезжаете на хитареа в одном месте, а меню находится в другом, то Вам еще надо дотащить туда мышь - а ее координаты при этом НЕ ТЕ, что что у меню, и меню должно закрываться. Соотв. Вам придется добавлять еще кучу всего. Ну и неудобно то, что координаты вообще-то должны иметь свободу меняться. Хотя бы для удобства разработки. Но для вашего плеера это, думаю, вполне подойдет. Только хитарею поместите на глубине, меньшей чем у меню, чтоб она не перекрывала меню сверху.

isangaley
29.08.2007, 19:10
спасибо!!! мне как-раз это и надо было! у меня меню ведь в видеоплеере. А вот вопрос можно ли сделать так чтобы меню уезжало через 5 секунд например, то-есть не надо делать чтоб мышь уходила за границу.

Wolsh
30.08.2007, 02:53
Ну вот это уже интересней, раньше я спящий режим не делал на своих плеерах ;) Спасибо за идею, а вот реализация
/////// удалено. качаем ниже

isangaley
30.08.2007, 16:02
тебе огромное спасибо)) ща буду пробовать твой исходник

isangaley
30.08.2007, 17:54
а там ведь когда выходишь за пределы области видео то же ведь надо чтоб исчезало меню через 3 секунды например(как в обычных плеерах), и у тебя еще некая инверсия происходит, меню начинает работать наоборот после повторных заходов на хитаерею. То-есть надо сделать так, чтобы при заходе на хитарею появлялось меню, а при выходе из ареи оно просто само исчезло бы за 3 секунды. Если ты не выходишь из хитареи и не двигаешь мышкой, оно то же исчезает, а если ты двигаешь в арее то оно уже по коду он роллОвер появится и не надо следить за движениями мыши иначе. Ща буду пробовать.

Wolsh
30.08.2007, 20:06
Зачем через 3 секунды? Если ты явно увел мышь с экрана - зачем ждать 3 секунды? Убирается сразу.
Инверсия - это при быстром пробеге мышью через экран? Да, пожалуй надо защиту Шумахера поставить...
"Ща буду пробовать" - это гуд. Давно пора :)

isangaley
30.08.2007, 20:51
Дело в том, что правильнее всего сделать так - при набеге мыши на арею меню показывается, и все не надо его убирать при выходе из ареи. просто надо поставить таймер на время. а когда выходим за арею то просто отключить все функции работы мыши. И в итоге получается все просто и проблем с инверсией не будет. И не надо задавать координаты и не надо отключать в коде арею и работает без проблем не мешает друг другу. Или например сделать так, чтобы при наведение на меню оно не исчезало вообще если мышь на нем осталась - короче реализовать принцип виндоус медиаплеера, только у нас плюс ко всему работает функция наведения на весь экран, так как это интернет плеер наподобие ютуб. Мой же плеер транслирует вебкамеры с радиостанций и располагается на сайте. Если есть время напиши в аську пожалуйста 300719939

Wolsh
31.08.2007, 01:20
Ну тогда вот так :) После долгих ночных бдений
Старые неправильные файлы удаляю
Кому интересно качаем этот