|
Как отловить событие покидания мышкой флэшки?Обсуждение темы Как отловить событие покидания мышкой флэшки? в разделе Технологии Flash, часть категории ДИЗАЙН И ГРАФИКА; Делаю одно подменю. Посмотрите в файле. Мне необходимо, чтобы, когда мышка покидала область выбора, текущий пункт меню и стрелка становились по центру. Я ... |
|
Опции темы |
24.09.2003, 01:15 | #1 |
|
Делаю одно подменю. Посмотрите в файле. Мне необходимо, чтобы, когда мышка покидала область выбора, текущий пункт меню и стрелка становились по центру. Я использую hitTest и все работает если двигать мышкой достаточно медленно. Проблема в том, что если достаточно быстро покидать область hitTest, то hitTest не срабатывает. Что подскажите?
|
|
24.09.2003, 04:06 | #2 |
|
делай все отдельным клипом и onClipEvent (enterFrame) проверяй на хит тест
|
|
25.09.2003, 02:27 | #3 |
|
Dis, напиши по подробнее. Я и так использую отдельный MovieClip и у него в EnterFrame прописан hitTest.
Проблема еще усложнилась. Я вставил меню на страничку и привязал к пунктам соответствующие файлы. Теперь hitTest вообще почти не cрабатывает, когда нажимаешь на пункты меню. Процессор занят загрузкой файла и не успевает отследить hitTest. Ну в чем же может быть проблема? Ведь так все просто - на EnterFrame стоит hitTest и если true, то делать одно, а если false - то другое. Я сделал проверку - в EnterFrame написал выводить hitTest в Output - и не понимаю результата. Если проводить мышкой над областью hitTest, то выводится true; если над областью флэшки, но не над областью hitTest - false. Это все работает. Но если быстро провести из области hitTest за пределы флэшки, то имеем проблемы - координаты мышки в флэше считаются прежними и как результат hitTest показывает true. Я немного побродил, поискал, и во всех флэшках использующих данный метод, которые видел, был этот неприятный эффект. Но ведь если делать кнопку, то она прекрасно отлавливает событие покидания ее области. Значит, если разработчики смогли сделать это для кнопки, то мы можем сделать это и для MovieClip. Остается вопрос - КАК? |
|
25.09.2003, 03:22 | #4 |
|
Незнаю ... у меня работает .... таких менюшек к стати полно , скачай себе какой-нить пример на крайний случай
|
|
25.09.2003, 14:23 | #5 |
|
Dis, дай fla с работающим примером.
У меня не работает - скачай пример моего fla из первой темы (я только что добавил proba.zip). Там текстовое поле в которое записывается true/false в зависимости от hitTest, а размер MovieClip равен размеру флэшки. Как видишь - результат всегда true. Я еще пробовал _root.onRollOut, но и он почему-то не срабатывает (вообще никогда). |
|
25.09.2003, 19:05 | #6 |
|
Готового фла нет с твоей менюшкой , но я делал подобные эффэкты и работало .... к примеру у меня на сайте где робот нарисован если хит тест тру ... то надписи пишутся, если лож то исчезают
|
|
25.09.2003, 19:18 | #7 |
|
Dis, если можешь, попробуй в своей флэшке сделать так, чтобы лучи света, которые идут за указателем мыши, возвращались к центру, если мышка покидает флэшку. Тебе тогда будет понятна проблема. Если у тебя получится сделать это, то дай пожалуйста исходник.
|
|
26.09.2003, 15:10 | #8 |
|
А мне это надо?
|
|
27.09.2003, 01:07 | #9 |
|
Dis, ну не надо так не надо.
Вообщем я разобрался как и что. Полазил по форумах и оказалось, что вопрос совсем не такой простой. Для решения данной проблемы используются два варианта: Первый состоит в том, чтобы отлавливать покидание мышкой флэшки через JavaScript и передавать информацию флэшу. Мне он кажется совсем неудобным, хотя, как я понял, им многие пользуются. Кроме того он не работает в Опере. Второй способ это использовать прозрачную кнопку на всю флэшку и у нее отлавливать события. Там есть свои особенности. Я нашел один пример и, хотя я не все инструкции понимаю, с его помощью решил свою проблему. Для заинтересованных привожу код: Button.prototype.privateOnRollOut = function(){ Mouse.inner = false; } Button.prototype.privateOnRollOver = function(){ Mouse.inner = true; } Button.prototype.addProperty("onRollOut", function(){ this.privateOnRollOut(); this.myOnRollOut(); }, function(f){ if(typeof(f) == "function"){ this.myOnRollOut = f; ASSetPropFlags(this,["myOnRollOut"],3,1); } } ) Button.prototype.addProperty("onRollOver", function(){ this.privateOnRollOver(); this.myOnRollOver(); }, function(f){ if(typeof(f) == "function"){ this.myOnRollOver = f; ASSetPropFlags(this,["myOnRollOver"],3,1); } } ) ASSetPropFlags(Button.prototype,null,3,1); Mouse.watch("inner", function(){ _root.mouseInside= arguments[2] ? "inside" : "outside"; } ) state_btn.useHandCursor = false; Здесь state_btn - прозрачная кнопка на всю флэшку на самом нижнем слое. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ASP, JS. Как отловить null? | Scroll | ASP, Perl, PHP и MySQL | 5 | 09.02.2009 19:16 |
Можно ли качать флэшки с Интернета? | NoX-XoN | Технологии Flash | 10 | 09.03.2005 14:42 |
Помогите отловить глюки в игре | puas | Технологии Flash | 4 | 11.10.2004 16:23 |
Размещение флэшки | bond | Технологии Flash | 4 | 25.07.2003 01:22 |
Реклама на форуме
Условия размещения рекламы
Биржа ссылок
Заработай на сайте!
|