Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MouseEvent.CLICK Вроде просто и в тоже время непонятно (http://www.flasher.ru/forum/showthread.php?t=203286)

Andrej 12.09.2013 18:29

MouseEvent.CLICK Вроде просто и в тоже время непонятно
 
Всем привет друзья.Ребят столкнулся тут с такой проблемой,использую обычную функцию MouseEvent.CLICK.Ниже код
Код AS3:

stage.addEventListener(MouseEvent.CLICK, klik);
obj1.addEventListener(MouseEvent.CLICK,klikobj1);
obj2.addEventListener(MouseEvent.CLICK,klikobj2);
function klik(event:MouseEvent):void
{
trace("слышу stage");
}
function klikobj1(event:MouseEvent)
{
trace("слышу объект 1");
}
function klikobj2(event:MouseEvent)
{
trace("слышу объект 2");
}

Проблема заключается в том,что если обьекты стоят на месте то все пучком,срабатывание происходит каждый раз.Как только хотябы один из обьектов двигать и пытаться на него нажать,через раз вобще ничего не срабатывает,тоесть при клике на движущийся обьект не слышит ни обьект ни stage.Как это можно решить?
С уважением Андрей.

AlexLucas 12.09.2013 18:41

Может вы не попадаете ? :)
Чтобы произошёл клик, MOUSE_UP и MOUSE_DOWN должны пройти по одному и тому же объекту.
И покажите как вы их двигаете.

AlexCooper 12.09.2013 18:43

Цитата:

Сообщение от AlexLucas (Сообщение 1146053)
Может вы не попадаете ? :)
Чтобы произошёл клик, MOUSE_UP и MOUSE_DOWN должны пройти по одному и тому же объекту.
И покажите как вы их двигаете.

а лучше вообще подписаться на MOUSE_DOWN

Andrej 12.09.2013 19:40

Вложений: 1
Ладно понятно если по обьекту не совпадает MOUSE_UP и MOUSE_DOWN,хотя двигаются они относително медленно.Но по идее то trace("слышу stage"); должно всегда срабатывать влюбом случае.Разве не так ?А не срабатывает.Вот на быструю руку swfку склепал.Если кликать только по обьектам иногда не срабатывает вобще ничего.А вот AlexLucas спасибо за идею MOUSE_DOWN,вроде бы тогда все срабатывает всегда.Только вопрос такой,для stage тоже делать лучше MOUSE_DOWN?Чтобы было понятнее это стрелялка игра,
stage.addEventListener(MouseEvent.CLICK, klik); это любой выстрел по любому месту,ну а это попадание по врагам враг 1 и враг 2:
obj1.addEventListener(MouseEvent.CLICK,klikobj1);
obj2.addEventListener(MouseEvent.CLICK,klikobj2);

AlexLucas 12.09.2013 19:49

Цитата:

Но по идее то trace("слышу stage"); должно всегда срабатывать влюбом случае
Нет, если вы не попали как следует по спрайту и MOUSE_DOWN и MOUSE_UP-ом, то не будет события, оно не всплывёт, и стейдж вы не услышите.

На очень быструю руку склепали, ошибки сыпятся.
И не мне спасибо :)

Andrej 12.09.2013 20:15

Упс сорри .AlexCooper спасибо за MOUSE_DOWN .Ок будем пробовать тогда все MOUSE_DOWN делать.

caseyryan 13.09.2013 08:00

Цитата:

Нет, если вы не попали как следует по спрайту и MOUSE_DOWN и MOUSE_UP-ом, то не будет события, оно не всплывёт, и стейдж вы не услышите.
Первый раз такое слышу :D Это нужно какие-то ужасно тормозные щелчки делать, будучи на кочерге или под кайфом ) Либо спрайтик должен быть размером с иголочное ушко и при этом двигаться))

по теме, не нужно делать столько обработчиков клика.
Можно сделать так:
Код AS3:

stage.addEventListener(MouseEvent.CLICK, onCkick, true);
 
function onClick(e:MouseEvent):void {
  if (e.target == obj1) {
      trace("слышу объект 1");
  } else if (e.target == obj2) {
      trace("слышу объект 2");
  }
}


AlexLucas 13.09.2013 12:35

Да по мне так тоже странно :)
Просто иначе никак объяснить это не получилось, если исходить из предоставленной инфы.


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

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