![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Oct 2012
Сообщений: 191
|
Здравствуйте! Ситуация следующая: есть один большой спрайт с событиями мыши, и в нем спрайты поменьше со своими слушателями мыши. Задача: определить если клик произошел над ребенком большого спрайта, то чтоб выполнялись функции ребенка, а родителя игнорировались. Если же на месте клика пусто, то выполнялись функции родителя.
В общем, вопрос скорее сводится к определению нажат ли ребенок спрайта или нет. В остальном, я думаю разберусь. Но если времени не жалко,можно и полную картинку вкратце обрисовать . Спасибо! |
|
|||||
package { import flash.display.Sprite; import flash.events.MouseEvent; public class Main extends Sprite { private var _parentObject: Sprite = new Sprite(); public function Main() { _parentObject.graphics.beginFill(0xFFFF00); _parentObject.graphics.drawRect(0, 0, 500, 300); _parentObject.graphics.endFill(); addChild(_parentObject); for (var i:int = 0; i < 10; i++) { var child:Sprite = new Sprite(); child.graphics.beginFill(0xFFFFFF * Math.random()); child.graphics.drawCircle(0, 0, 50); child.graphics.endFill(); child.x = 500 * Math.random(); child.y = 300 * Math.random(); _parentObject.addChild(child); } addEventListener(MouseEvent.CLICK, onClick, true); } private function onClick(e:MouseEvent):void { if (e.target == _parentObject) { trace("Щелчок по родителю"); } else { trace("Щелчок по", e.target); } } } } |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 191
|
да, трейс показывает нажатие по ребенкам, но функции родителя все равно не игнорируются
|
|
|||||
|
запрети распространение
|
|
|||||
|
Регистрация: Oct 2012
Сообщений: 191
|
звучит дельно, подскажите незнающему как. Спасибо!
|
|
|||||
|
Подождем медиума.
|
|
|||||
|
Регистрация: Oct 2012
Сообщений: 191
|
В конкретной ситуации я разобрался! теперь рубрика необязательных вопросов: а запрещать распространения события в каждой ситуации по разному надо?
|
|
|||||
|
по ситуации
__________________
местонахождение |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Подписываться надо туда, куда нужно, а не на всю дедушкину деревню.
В Вашем случае был нужен спрайт, залитый прозрачным цветом и лежащий на нулевой глубине, под детишками. И на него подписываться. Или, возможно, там уже есть нечто подобное на фоне, не суть важно. Суть в том, что сама логика "клик по всему контейнеру" здесь неправильная. Потому и приходится потом огороды городить и сортировать весь колхоз. Вам был нужен клик не по контейнеру, а по пространству между детишками, то есть по тому, что лежит под ними. Так в чем смысл извращаться с кастингами и тем более с остановками распространения? Давайте тогда всегда подписываться на клик по стейджу и потом разгребаться с таргетами?
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|