![]() |
кнопка в кнопке без 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, и было ли найдено решение? |
Привет!
Может не все понял, но я бы просто написал так: Код AS1/AS2:
|
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 |
Уход курсора за пределы ролика отслеживается яваскриптом.
|
согласен, как последний неизбежный вариант - да. Хотя честно скажу - не хочется связываться с JS. Мне надо отслеживать и "заход" и "уход" - это же не проблема?
|
Цитата:
Попробуйте переписать содержимое big_btn.onRollOver так, чтобы он не реагировал на связку onRollOut + onRollOver , если она выполняется в пределах одного кадра. Например, отложите выполнение функций onRollOver и onRollOut на 1 кадр каким-нибудь этаким способом: Код AS1/AS2:
|
to Stargazer:
суть предложения полностью понятна. возможно это позвоит решить проблему. Только с Цитата:
Код:
big_btn.onRollOver = function() { |
Вложений: 1
Имеем:
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 остается "наведенным" – то есть полупрозрачным. Условие выполнено! Смотрим исходник. Так что не так? |
Я извиняюсй но хотелосй би поднятй етy темy ешё раз и добитй до конца если никто не против? Тут ситуация више напиасана вами понятно.. если нажимаеш на small_mc то добовляете функцию для болйшой onRollOver всё работает заемчателйно не спорю, но а если у етой big_mc не просто будет _alpha =50 а к примеру gotoAndPlay().. то при на водке на small_mc болйшая кнопка продолжит игратй что не нужно.. какие варианти предложите я уже мучаюсй третий денй.. нигде точного решения не нашол
одним словом питаюсй добитца onRollOver в самом onRollOver |
Цитата:
Автору было как раз нужно Цитата:
|
http://www.bigiwin.com/
вот она проблема.. потому что кнопка на всю половину частй екрана.. а осталйние две получаютца на той же территории. естй решение или нет етому? |
1. Сделайте через hitTest и все дела. Это можно сделать за 15 минут (включая чтение справки).
2. Сделайте по аналогии с тем, как посоветовал Жень-Шень автору темы. |
да почитал я =) hitTest несрабативает т.к. у меня первая кнопка покривает пол екрана( включая вторую кнопка ) и hitTest не обнаруживает её.. если я не прав подскажите как тогда?
|
Причина не в этом. hitTest не сработал из-за чего-то другого.
В вашем случае через hitTest сделать можно. |
Stargazer глянй пожалуйста исходник.. у меня уже терпения не осталосй готов всё переделатй..
http://www.bigiwin.com/checkit.fla |
"Недостаточно альтруизма для выполнения операции".
У меня сейчас и так солидный проект на флеш (не знаю, куда от него деться). Так что возиться с чужим кодом совершенно нет желания. |
я всё понял =) и на етом благодарю
|
Вообшем разобрался как с ХитТестом работатй и вот что получилосй..
Код AS1/AS2:
второй вопрос вот в коде ниже ешё нада 4 проверки если кнопка одна из 4 нажата то на неё соответственний линк стоит.. но тут срабативает толко одна кнопка из 4 как сделатй чтоби onMouseDown срабативал на все кнопки? спасибо! Код AS1/AS2:
покурил сигаретку и сам ответил на второй вопрос else if спасло.. и всё таки может естй кратчайшие коди етим двум проверкам? |
LUCKY, а что у тебя с запятыми и орфографией?
Можно засунуть проверки в цикл, они однотипны. Да, и код на сколько там... 20? 40? 50? строчек - это кхм... это "не большой код". Класс на 3-4 тысячи строчек - это класс среднего объема, так что =) |
спустя некоторое время опять наткнулся на эту тему - так что резюмирую:
пост #7 - вот где истина, а именно ЗАДЕРЖКА перед выполнением СОБСТВЕННОГО подобия функции onRollOver пост #8 - глупость и непонимание сути проблемы. понимаю что надо бы выложить исходники чтобы показать как проблема решилась, но будучи частью проекта - код трудночитаем, а переписывать - сил нет :) |
| Часовой пояс GMT +4, время: 10:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.