Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Обработчик блокирует вложенные элементы (http://www.flasher.ru/forum/showthread.php?t=161564)

lorddexon 25.07.2011 20:40

Обработчик блокирует вложенные элементы
 
Приветствую!
Такая проблема. Есть мувиклип (круг), внутри него встроен другой элемент (круг поменьше).
Так вот если для большого круга написать любую функцию (будь то rollover/startDrag и т.д.), то становится невозможным никоим образом нажать кружок поменьше.
Как решить эту проблему? Мне необходимо, чтоб круг поменьше продолжал сидеть в большем круге (когда я его перетаскиваю) + родительская функция не перекрывала дочернюю.
Спасибо.

mooncar 25.07.2011 20:48

Вложений: 1
Используйте hitTest.
Пример с решением, похожий на вашу ситуацию, есть в этой теме http://www.flasher.ru/forum/showthread.php?t=160616
Тут же кстати и решение, как обойтись без кондового startDrag.

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

Еще один пример, когда с помощью hitTest эмулируются кнопочные события, прилагаю.

lorddexon 25.07.2011 20:59

То есть вместо onRollOver на внутренний кружок, сделать проверку на хиттест кружка с курсором мышки?

mooncar 25.07.2011 21:27

Просто на проверку координат мыши.
А уж на что хиттест - воля ваша, на все объекты, чтобы еще и перетаскивание организовать, как в примере, либо только на внутренний.

lorddexon 25.07.2011 21:32

Да, спасибо, работает.

А как организовать нажатие мышки на внутренний кружок?

mooncar 25.07.2011 21:33

Ну делать проверку на хиттест со внутренним кружком при событии onMouseDown (~ onPress). Или на отпускание мыши (~ onRelease).

lorddexon 25.07.2011 22:22

Что-то не получается. Подскажи поподробней, пожалуйста)

suVrik 25.07.2011 22:35

Код AS1/AS2:

onMouseDown = function(){
        if(b1.b2.hitTest(_root._xmouse, _root._ymouse, true)) trace("Внутренний круг был нажат!");
        else if(b1.hitTest(_root._xmouse, _root._ymouse, true)) trace("Внешний круг был нажат!");
}
 
onMouseUp = function(){
        if(b1.b2.hitTest(_root._xmouse, _root._ymouse, true)) trace("На внутреннем круге мышь была отпущена!");
        else if(b1.hitTest(_root._xmouse, _root._ymouse, true)) trace("На внешнем круге мышь была отпущена!");
}

b1 - круг внешний.
b2 - круг внутри круга внешнего (внутренний).

lorddexon 25.07.2011 22:51

Спасибо, отлично рабоотает :yahoo:


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

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