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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.11.2013, 22:36
Andrej вне форума Посмотреть профиль Отправить личное сообщение для Andrej Найти все сообщения от Andrej
  № 1  
Ответить с цитированием
Andrej

Регистрация: Sep 2010
Сообщений: 49
По умолчанию 2 объекта одним кликом мыши

Все привет .Возникла такая проблемка,нужно,чтобы 2 обьекта сработали на один клик мыши.Есть ли в AS3 такая возможность.Один обьект находится под вторым,который его полностью закрывает.Надо чтобы при клике мыши срабатывали оба обьекта,если мы попадаем мышью и на один и навторой одновременно.Для наглядности стекло и за ним человек,стреляем стекло разбивается и человек падает в два клика понятно а можно ли в один?
stage.addEventListener(MouseEvent.CLICK...... не подходит,поскольку срабатывание происходит в любой точке сцены.Спасибо.

Старый 13.11.2013, 22:56
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Клик мыши всплывающий. Если объект "стекло" является дитём или внуком или правнуком и т.д. объекта "человек" в понятиях дисплейлиста, то можно отловить один клик этими двумя объектами. Если у них нет такой связи, то ловите событие у прародителя-контроллера объекта "стекло" и давайте команду "падать человеку".

P.S. А правда, что в вашем языке принято не ставить пробел после знака пунктуации?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 13.11.2013, 22:57
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 3  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Так?
Код AS3:
стекло.addEventListener(MouseEvent.CLICK,clickHandler);
человек.addEventListener(MouseEvent.CLICK,clickHandler);
private function clickHandler(event:MouseEvent):void
{
   //
}

Старый 13.11.2013, 23:19
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 4  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Вы не разобрались в сути проблемы и отвечаете.
ТопикСтартеру: данной функции нет во Flash.
Но можно схитрить:
Код AS3:
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;
}
Писал прямо в браузере, поэтому не уверен в работоспособности давнного кода.

Старый 14.11.2013, 00:11
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 5  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
ТС нужно при клике мышью по стеклу проверить, попал ли он в человека, который в некоторых сценариях, так же кликабельный и его можно застрелить. Попробуйте - hitTestObjec() hitTestPoint()

Старый 14.11.2013, 00:12
Andrej вне форума Посмотреть профиль Отправить личное сообщение для Andrej Найти все сообщения от Andrej
  № 6  
Ответить с цитированием
Andrej

Регистрация: Sep 2010
Сообщений: 49
dimarik А разве так важна орфография в данном случае ? Всем спасибо за ответы. Я просто хотел узнать, есть ли такая возможность. MikroAcse да выкрутиться конечно можно. В вашем случае идея неплохая, только вот надо, чтобы стекло разбивалось в любом случае как мы на него кликнули. Придется тогда помещать человека в обьект стекло. Так будет проще.
Еще раз всем спасибо.
С уважением Андрей.

Старый 14.11.2013, 01:19
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 7  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Андрей, так туда, где я написал "// тут выполняете Ваш код", там и пишите разрушение стекла + убивание человечка.

Цитата:
ТС нужно при клике мышью по стеклу проверить, попал ли он в человека
Как раз я правильно ответил. Используя только события мыши, можно схитрить.
Но это плохо. В данном случае, Вы правы: hitTestPoint для этого прекрасно походит.

Старый 14.11.2013, 12:29
Andrej вне форума Посмотреть профиль Отправить личное сообщение для Andrej Найти все сообщения от Andrej
  № 8  
Ответить с цитированием
Andrej

Регистрация: Sep 2010
Сообщений: 49
MikroAcse.Хорошо большое спасибо. Я вчера над вашем кодом поколдовал. Да там можно выкрутиться, только у меня таких обьектов за различными стеклами будет много, потому не хочется мутить много функций с булевами.Я сделал так , поместил человека в мувик стекло, стекло на первом кадре оставил как shape и тогда все работает как положенно только с двумя функциями
Код AS3:
steklo.chelovek.addEventListener(MouseEvent.MOUSE_DOWN, killchelovek);
steklo.addEventListener(MouseEvent.MOUSE_DOWN, shootsteklo);
Еще раз всем спасибо.
С уважением Андрей.

Старый 15.11.2013, 02:08
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 9  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 567
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Что-то вы тут какой-то велосипед изобретаете, зачем все так усложнять? Человек убивается со второго клика через стекло, т.к. стекло его перекрывает и событие мыши он просто не получает. В этом случае у стекла ставим:

Код AS3:
steklo.mouseEnabled = true;
ну и потом просто вешаем слушатели на стекло и человека:

Код AS3:
steklo.addEventListener(MouseEvent.MOUSE_DOWN, killchelovek);
chelovek.addEventListener(MouseEvent.MOUSE_DOWN, shootsteklo);

Старый 15.11.2013, 16:33
Andrej вне форума Посмотреть профиль Отправить личное сообщение для Andrej Найти все сообщения от Andrej
  № 10  
Ответить с цитированием
Andrej

Регистрация: Sep 2010
Сообщений: 49
Bletraut что то не понял идеи,можно поподробнее.Стекло и так по умолчанию = true и полюбому перекрывает человека.

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

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

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


 


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


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