Вернуться   Дизайнерский форум » ДИЗАЙН И ГРАФИКА » Технологии Flash

Как отловить событие покидания мышкой флэшки?

Обсуждение темы Как отловить событие покидания мышкой флэшки? в разделе Технологии Flash, часть категории ДИЗАЙН И ГРАФИКА; Делаю одно подменю. Посмотрите в файле. Мне необходимо, чтобы, когда мышка покидала область выбора, текущий пункт меню и стрелка становились по центру. Я ...


Закрытая тема
 
Опции темы
Старый 24.09.2003, 01:15   #1
Делаю одно подменю. Посмотрите в файле. Мне необходимо, чтобы, когда мышка покидала область выбора, текущий пункт меню и стрелка становились по центру. Я использую hitTest и все работает если двигать мышкой достаточно медленно. Проблема в том, что если достаточно быстро покидать область hitTest, то hitTest не срабатывает. Что подскажите?
Изображения
Тип файла: jpg scan11.jpg (15.6 Кб, 101 просмотров)
 
Старый 24.09.2003, 01:15
Ссылки
Старый 24.09.2003, 04:06   #2
Dis

делай все отдельным клипом и 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
Dis

Незнаю ... у меня работает .... таких менюшек к стати полно , скачай себе какой-нить пример на крайний случай
 
Старый 25.09.2003, 14:23   #5
Dis, дай fla с работающим примером.

У меня не работает - скачай пример моего fla из первой темы (я только что добавил proba.zip). Там текстовое поле в которое записывается true/false в зависимости от hitTest, а размер MovieClip равен размеру флэшки. Как видишь - результат всегда true.

Я еще пробовал _root.onRollOut, но и он почему-то не срабатывает (вообще никогда).
 
Старый 25.09.2003, 19:05   #6
Dis

Готового фла нет с твоей менюшкой , но я делал подобные эффэкты и работало .... к примеру у меня на сайте где робот нарисован если хит тест тру ... то надписи пишутся, если лож то исчезают
 
Старый 25.09.2003, 19:18   #7
Dis, если можешь, попробуй в своей флэшке сделать так, чтобы лучи света, которые идут за указателем мыши, возвращались к центру, если мышка покидает флэшку. Тебе тогда будет понятна проблема. Если у тебя получится сделать это, то дай пожалуйста исходник.
 
Старый 26.09.2003, 15:10   #8
Dis

А мне это надо?
 
Старый 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 - прозрачная кнопка на всю флэшку на самом нижнем слое.
 
Старый 27.09.2003, 01:07
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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


Текущее время: 20:39. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум