![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2010
Сообщений: 49
|
Все привет .Возникла такая проблемка,нужно,чтобы 2 обьекта сработали на один клик мыши.Есть ли в AS3 такая возможность.Один обьект находится под вторым,который его полностью закрывает.Надо чтобы при клике мыши срабатывали оба обьекта,если мы попадаем мышью и на один и навторой одновременно.Для наглядности стекло и за ним человек,стреляем стекло разбивается и человек падает в два клика понятно а можно ли в один?
stage.addEventListener(MouseEvent.CLICK...... не подходит,поскольку срабатывание происходит в любой точке сцены.Спасибо. |
|
|||||
|
.
|
Клик мыши всплывающий. Если объект "стекло" является дитём или внуком или правнуком и т.д. объекта "человек" в понятиях дисплейлиста, то можно отловить один клик этими двумя объектами. Если у них нет такой связи, то ловите событие у прародителя-контроллера объекта "стекло" и давайте команду "падать человеку".
P.S. А правда, что в вашем языке принято не ставить пробел после знака пунктуации? |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Так?
|
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Вы не разобрались в сути проблемы и отвечаете.
ТопикСтартеру: данной функции нет во Flash. Но можно схитрить: var clicked:Boolean = false; steklo.mouseEnabled = false; chelovek.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); steklo.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); function onMouseDown(e:MouseEvent):void { clicked = true; steklo.mouseEnabled = true; } function onMouseUp(e:MouseEvent):void { if(clicked) { // тут выполняете Ваш код } clicked = false; steklo.mouseEnabled = false; } |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
ТС нужно при клике мышью по стеклу проверить, попал ли он в человека, который в некоторых сценариях, так же кликабельный и его можно застрелить. Попробуйте - hitTestObjec() hitTestPoint()
|
|
|||||
|
Регистрация: Sep 2010
Сообщений: 49
|
dimarik А разве так важна орфография в данном случае ?
Всем спасибо за ответы. Я просто хотел узнать, есть ли такая возможность. MikroAcse да выкрутиться конечно можно. В вашем случае идея неплохая, только вот надо, чтобы стекло разбивалось в любом случае как мы на него кликнули. Придется тогда помещать человека в обьект стекло. Так будет проще.Еще раз всем спасибо. С уважением Андрей. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Андрей, так туда, где я написал "// тут выполняете Ваш код", там и пишите разрушение стекла + убивание человечка.
Цитата:
Но это плохо. В данном случае, Вы правы: hitTestPoint для этого прекрасно походит. |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 49
|
MikroAcse.Хорошо большое спасибо. Я вчера над вашем кодом поколдовал. Да там можно выкрутиться, только у меня таких обьектов за различными стеклами будет много, потому не хочется мутить много функций с булевами.Я сделал так , поместил человека в мувик стекло, стекло на первом кадре оставил как shape и тогда все работает как положенно только с двумя функциями
![]() steklo.chelovek.addEventListener(MouseEvent.MOUSE_DOWN, killchelovek); steklo.addEventListener(MouseEvent.MOUSE_DOWN, shootsteklo); С уважением Андрей. |
|
|||||
|
Что-то вы тут какой-то велосипед изобретаете, зачем все так усложнять? Человек убивается со второго клика через стекло, т.к. стекло его перекрывает и событие мыши он просто не получает. В этом случае у стекла ставим:
ну и потом просто вешаем слушатели на стекло и человека: |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 49
|
Bletraut что то не понял идеи,можно поподробнее.Стекло и так по умолчанию = true и полюбому перекрывает человека.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 16:12. |
|
|
« Предыдущая тема | Следующая тема » |
|
|