Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   MouseEvent ссылка на объект (http://www.flasher.ru/forum/showthread.php?t=214698)

ZackMercury 08.11.2017 13:22

Не понимаю, зачем так делать, не нужно же никаких mouseChildren, когда у тебя currentTarget тот, что ты сам подписал руками.

undefined 08.11.2017 13:24

так он не танчики подписывает, а парента.

ZackMercury 08.11.2017 13:28

У этого подхода есть какие-то плюсы, кроме постоянной конфузии с event.target?

ZergMaster 08.11.2017 13:30

плюс в том, что одно событие на множество объектов. Никаких конфузий

ZackMercury 08.11.2017 13:34

Так а где плюс? Ну да, никаких, учитывая, сколько подобных тем уже.

ZergMaster 08.11.2017 13:38

Мы в итоге так и не поняли, как у тебя создается твой многострадальный танк.
Если у тебя сделано так, что есть класс Game, который Sprite (ну или MovieClip), который создает экземпляр и добавляет в себя EnemyTank

Код AS3:

var enemyTank:EnemyTank = new EnemyTank();
addChild(enemyTank);

EnemyTank же создает в себе всякое, в том числе и добавляет в себя графику, в том числе мувик
Код AS3:

var tank:MovieCLip = new Tank_mc();
addChild(tank);

то для того, чтобы все работало, нужно в EnemyTank прописать
Код AS3:

mouseChildren = false;

в Game добавить слушатель
Код AS3:

addEventListener(MouseEvent.CLICK, clickHandler)

и потом в слушателе
Код AS3:

private function clickHandler(event:MouseEvent):void
 {
  trace(event.target);
 }


razerw 08.11.2017 13:48

Цитата:

Сообщение от undefined (Сообщение 1202821)
добавь в EnemyTank
Код AS3:

mouseChildren=false;

и затрейси
Код AS3:

trace(e.target,e.currentTarget);


trace(event.currentTarget, event.target);

[object Game] [object Tank_mc]

undefined 08.11.2017 13:49

Цитата:

У этого подхода есть какие-то плюсы, кроме постоянной конфузии с event.target?
А я и не говорил, что у этого есть плюсы.Возможно у товарища вообще нет массива всех танчиков.
Цитата:

плюс в том, что одно событие на множество объектов. Никаких конфузий
Число событий никак не зависит от числа слушателей

ZackMercury 08.11.2017 13:53

Цитата:

trace(event.currentTarget, event.target);

[object Game] [object Tank_mc]
Нужно больше кода :)

Если вы добавили в EnemyTank mouseChildren = false, то это говорит о том, что вы Tank_mc добавляете не внутрь него, а куда-то в другое место х)

razerw 08.11.2017 13:57

Цитата:

Сообщение от razerw (Сообщение 1202828)
trace(event.currentTarget, event.target);

[object Game] [object Tank_mc]

возможно я не правильно изъяснился, попробую еще раз.

класс Games создает EnemyTank класс унаследован EnemyTank extends EnemyBase
в конструкторе EnemyTank происходит следующее
_sprite = new Tank_mc(); // Tank_mc мувик из библиотеки
_sprite.mouseChildren = false;
в конструкторе EnemyBase
addChild(_sprite);

сам слушатель кликанья инициализарован в классе games


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

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