Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.08.2009, 21:40
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 1  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
По умолчанию обойти onRollOut внешнего клипа при onRollOver внутреннего клипа

Подскажите, пожалуйста, как обойти реагирование на onRollOver клипа, если указатель навелся на кнопку (Button) или другой клип (MovieClip)?

У меня есть некий клип "back_mc" с назначеными ему двумя событиями onRollOver и onRollOut. Эти события запускают функцию "показать панель навигации" и "спрятать панель навигации" соответственно. Т.е. как в некоторый флеш flv-плеерах на сайтах: при наведении мышки в область плеера всплывает панель управления, при выходе мышки за область - панель убирается. Хочу сделать также, но у меня панель убирается не только при выходе указателя мышки за границы моей флешки, но и при наведении мышки на любую кнопку внутри флешки (потому как срабатывает back_mc.onRollOver и указатель мышки наводится на эту кнопку).

Если кто делал подобное, скажите как можно показывать/прятать клип-панель управления при наведении/выходе мышки в область флешки, и чтобы нормально работали все кнопки на этой панели управления !?


Последний раз редактировалось RAlfDog; 01.08.2009 в 22:09.
Старый 01.08.2009, 21:48
Mnilionic вне форума Посмотреть профиль Отправить личное сообщение для Mnilionic Найти все сообщения от Mnilionic
  № 2  
Ответить с цитированием
Mnilionic
 
Аватар для Mnilionic

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
лучше делать на движение мыши.
Если мышка катается по флешу показываем панель. Как только остановилась по таймеру убираем панель.

Старый 01.08.2009, 22:38
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
При наличии большого количества элементов, которые должны реагировать на наведение мыши и потенциальных проблем со взаимными перекрытиями их активных областей используйте проверки hitTest вместо метода onRollOver.
Это гибко и позволяет четко указывать условия, при которых нужно или не нужно вызвать то или иное действие. Все проблемы отпадают.
Для непрерывной проверки hitTest делайте, например, с использованием функции onMouseMove.

Старый 01.08.2009, 22:44
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 4  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Цитата:
Сообщение от mooncar Посмотреть сообщение
Для непрерывной проверки hitTest делайте, например, с использованием функции onMouseMove.
Спасибо!
А при выходе мышки за пределы контейнера флеш-плеера событие onMouseMove вызывается?

Старый 01.08.2009, 22:54
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вот самый простой код:
Код AS1/AS2:
panelShowed = 0;
this.onMouseMove = function  () {
	if (back_mc.hitTest(_root._xmouse, _root._ymouse) && panelShowed == 0) {
		panelShowed = 1;
		trace("показываем панель");													 													  
	} 
	if (!back_mc.hitTest(_root._xmouse, _root._ymouse) && panelShowed == 1) {
		panelShowed = 0;
		trace("прячем панель");						  
	} 
};
Но если back_mc равен всей области флешки, то действительно, onMouseMove не сработает на убирание панели. Сделайте по контуру этот мувик на несколько пикселей меньше, чем область флешки, и тогда все будет в порядке.
Или подумайте еще

Старый 31.10.2009, 14:53
skald вне форума Посмотреть профиль Отправить личное сообщение для skald Найти все сообщения от skald
  № 6  
Ответить с цитированием
skald
[+4 12.09.08]

Регистрация: Oct 2002
Адрес: SPb
Сообщений: 151
Отправить сообщение для skald с помощью ICQ
у меня возникла такая же проблема ... и предложенные здесь варианты не работают.

может быть есть запись типа mc.onRollOver = fulse, null, undefined или чтонить похожее??

либо можно както "распаковать" mc? сменить глубину и т.д.???

самое мощное, что пришло мне в голову, это удалить полностью mc и создать его по новой ... или перекрыть ...
но это, мне кажется, далеко не самый изящный вариант ...

Старый 31.10.2009, 15:02
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Код AS1/AS2:
delete mc.onRollOver ;
А чем hitTest не угодил?

Старый 31.10.2009, 15:31
skald вне форума Посмотреть профиль Отправить личное сообщение для skald Найти все сообщения от skald
  № 8  
Ответить с цитированием
skald
[+4 12.09.08]

Регистрация: Oct 2002
Адрес: SPb
Сообщений: 151
Отправить сообщение для skald с помощью ICQ
с ним эффекты не очень запускать))) там надо переменные водить, так как у меня эта тема создается для многих объектов динамически, с большой степенью вложенности то мне просто не подходит ...

спасибо за ответ))))

жаль .. но даже если на внешний клип удалить событие, то на внутренний работать не хочет .. может конечно тому причины динамические имена мувиков(((


Последний раз редактировалось skald; 31.10.2009 в 15:41.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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