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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.04.2009, 15:59
mozi вне форума Посмотреть профиль Отправить личное сообщение для mozi Найти все сообщения от mozi
  № 1  
Ответить с цитированием
mozi
[+4 28.04.08]
 
Аватар для mozi

Регистрация: Mar 2006
Сообщений: 115
Отправить сообщение для mozi с помощью ICQ
По умолчанию кнопка в кнопке без hitTest

задача:
1. есть два мувиклипа: clip_1_mc, clip_2_mc
2. clip_1_mc - больше, clip_2_mc - меньше, располагается поверх clip_1_mc

что надо получить:
1. при наведении на clip_1_mc происходит некоторая реакция (например this._alpha = 50), при "уведении" - обратная (например this._alpha = 100)
2. для clip_2_mc все абсолютно аналогично. реакция на наведение\уведение
3. при наведении на маленький клип clip_2_mc, большой clip_1_mc остается "наведенным".

Вроде бы все просто: использовать hitTest для clip_1_mc. Да вот проблема: высота flash-ролика совпадает с высотой clip_1_mc, поэтому hitTest будет работать некорректно, а именно не будет отрабатывать событие "уведения", т.к. последнее отслеженное значение _ymouse всегда будет еще над роликом, а соответсвенно и над clip_1_mc.

Фактически тут соединены две задачи: "кнопка в кнопке" и "курсор над роликом".

Сталкивался ли кто-то с подобной проблемой в рамках AS1-2, и было ли найдено решение?
__________________
icq 247164778

Старый 15.04.2009, 17:11
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 2  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Привет!
Может не все понял, но я бы просто написал так:
Код AS1/AS2:
small_btn.onRollOver = function() {
	this._alpha = 50
	this._parent.big_btn.onRollOver();
};
small_btn.onRollOut = function() {
	this._alpha = 100
};
 
big_btn.onRollOver  = function() {
	this._alpha = 50
};
big_btn.onRollOut = function() {
	this._alpha = 100
};


Последний раз редактировалось Жень Шень; 15.04.2009 в 17:14.
Старый 15.04.2009, 18:29
mozi вне форума Посмотреть профиль Отправить личное сообщение для mozi Найти все сообщения от mozi
  № 3  
Ответить с цитированием
mozi
[+4 28.04.08]
 
Аватар для mozi

Регистрация: Mar 2006
Сообщений: 115
Отправить сообщение для mozi с помощью ICQ
to Жень Шень:
В ситуации движения курсора по пути "за пределами swf > бОльший клип > меньший клип > бОльший клип > за пределами swf" то что ты написал будет работать так :

big_btn.onRollOver
big_btn.onRollOut
small_btn.onRollOver
big_btn.onRollOver(твой искуственный вызов)
small_btn.onRollOut
big_btn.onRollOver
big_btn.onRollOut

а требуется чтоб было так:

big_btn.onRollOver
small_btn.onRollOver
small_btn.onRollOut
big_btn.onRollOut
__________________
icq 247164778


Последний раз редактировалось mozi; 15.04.2009 в 18:34.
Старый 15.04.2009, 18:35
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 4  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Уход курсора за пределы ролика отслеживается яваскриптом.
__________________
тонкий тролль, осеянный благодатью

Старый 15.04.2009, 18:55
mozi вне форума Посмотреть профиль Отправить личное сообщение для mozi Найти все сообщения от mozi
  № 5  
Ответить с цитированием
mozi
[+4 28.04.08]
 
Аватар для mozi

Регистрация: Mar 2006
Сообщений: 115
Отправить сообщение для mozi с помощью ICQ
согласен, как последний неизбежный вариант - да. Хотя честно скажу - не хочется связываться с JS. Мне надо отслеживать и "заход" и "уход" - это же не проблема?
__________________
icq 247164778

Старый 15.04.2009, 20:08
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 6  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Цитата:
Сообщение от mozi Посмотреть сообщение
to Жень Шень:
В ситуации движения курсора по пути "за пределами swf > бОльший клип > меньший клип > бОльший клип > за пределами swf" то что ты написал будет работать так...

...а требуется чтоб было так:

big_btn.onRollOver
small_btn.onRollOver
small_btn.onRollOut
big_btn.onRollOut
Мне кажется, Жень Шень предложил вполне неплохой вариант решения проблемы малыми затратами.

Попробуйте переписать содержимое big_btn.onRollOver так, чтобы он не реагировал на связку onRollOut + onRollOver , если она выполняется в пределах одного кадра.

Например, отложите выполнение функций onRollOver и onRollOut на 1 кадр каким-нибудь этаким способом:
Код AS1/AS2:
funcDelayed= function(){
    delete this.onEnterFrame;
    this.activeMouseHandler();
}
 
big_btn.onRollOver= function(){
    this.activeMouseHandler= _my_onRollOver;
    this.onEnterFrame= funcDelayed;
}
 
big_btn.onRollOut= function(){
    this.activeMouseHandler= _my_onRollOut;
    this.onEnterFrame= funcDelayed;
}
Код набросал из головы, чтобы показать идею. Не проверял.


Последний раз редактировалось Stargazer; 15.04.2009 в 20:17.
Старый 15.04.2009, 20:44
mozi вне форума Посмотреть профиль Отправить личное сообщение для mozi Найти все сообщения от mozi
  № 7  
Ответить с цитированием
mozi
[+4 28.04.08]
 
Аватар для mozi

Регистрация: Mar 2006
Сообщений: 115
Отправить сообщение для mozi с помощью ICQ
to Stargazer:
суть предложения полностью понятна. возможно это позвоит решить проблему. Только с
Цитата:
не реагировал на связку onRollOut + onRollOver
это никак не связано - таких парных событий, в которых надо не выполнять то событие, которое идет раньше - нет (см. пост #3). Зато по такому же принципу можно при переходе с big_btn на small_btn - исключить выполнение big_btn.onRollOver
Код:
big_btn.onRollOver = function() {
this.next_action = my_roll_over;  // собственно действие
}

big_btn.onEnterFrame = function() {
this.next_action();  // выполнится на следующий кадр
}

small_btn.onRollOver = function() {
big_btn.next_action = null;
}
Завтра попробую.
__________________
icq 247164778

Старый 16.04.2009, 11:03
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 8  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Имеем:
1. Есть два мувиклипа: big_mc, small_mc
2. big_mc - больше, small_mc - меньше, располагается поверх big_mc
Получили
1. При наведении на big _mc происходит big _mc._alpha = 50, при "уведении" - big _mc._alpha = 100. Условие выполнено!
2. Для small_mc все абсолютно аналогично. Условие выполнено!
3. При наведении на маленький клип small _mc, большой big _mc остается "наведенным" – то есть полупрозрачным. Условие выполнено!
Смотрим исходник.
Так что не так?
Вложения
Тип файла: rar 1.rar (4.8 Кб, 59 просмотров)


Последний раз редактировалось Жень Шень; 16.04.2009 в 11:06. Причина: Исправление описки
Старый 11.05.2009, 16:45
LUCKY SHAMROCK вне форума Посмотреть профиль Найти все сообщения от LUCKY SHAMROCK
  № 9  
Ответить с цитированием
LUCKY SHAMROCK
Banned
[+2 27.03.09]
[+1.4 22.07.09]

Регистрация: Mar 2009
Сообщений: 23
Я извиняюсй но хотелосй би поднятй етy темy ешё раз и добитй до конца если никто не против? Тут ситуация више напиасана вами понятно.. если нажимаеш на small_mc то добовляете функцию для болйшой onRollOver всё работает заемчателйно не спорю, но а если у етой big_mc не просто будет _alpha =50 а к примеру gotoAndPlay().. то при на водке на small_mc болйшая кнопка продолжит игратй что не нужно.. какие варианти предложите я уже мучаюсй третий денй.. нигде точного решения не нашол
одним словом питаюсй добитца onRollOver в самом onRollOver


Последний раз редактировалось LUCKY SHAMROCK; 11.05.2009 в 16:47.
Старый 11.05.2009, 19:14
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 10  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Цитата:
Сообщение от LUCKY SHAMROCK Посмотреть сообщение
при на водке на small_mc болйшая кнопка продолжит игратй что не нужно.. какие варианти предложите я уже мучаюсй третий денй.. нигде точного решения не нашол
одним словом питаюсй добитца onRollOver в самом onRollOver
Похоже, что невнимательно смотрите.
Автору было как раз нужно
Цитата:
что надо получить:
...
3. при наведении на маленький клип clip_2_mc, большой clip_1_mc остается "наведенным".
Почему вы не хотите просто разместить onRollOver на разных (не вложенных один в другого) мувиклипах?

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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