![]() |
MouseEvent ссылка на объект
Добрый день друзья, столкнулся с такой проблемой. требуется ваша помощь.
установил слушатель MouseEvent.CLICK в функции mouseClickHandler отлавливаю событие. на сцене у меня находится танк я по нему счелкую и трейсю trace(event.target); получаю сообщение о том что я кликаю по объекту [object Tank_mc]. и вот вопрос как мне обратиться к функциям и методам данного объекта? Tank_mc это мувик из библиотека, инициализировал его класс EnemyTank. |
Код AS3:
|
Если подписан на клик EnemyTank, то
Код AS3:
|
Цитата:
|
лол, а на что у вас слушатель CLICK повешен?
|
Цитата:
как раз в классе Game и инициализаруется слушатель CLICK Добавлено через 1 минуту я знаю что можно понапихать MouseEvent.CLICK в сами объекты EnemyTank и они будут выдавать то что мне нужно, но если у меня будет 20 танков, это будет расточительство, поэтому я и инициализирую 1 слушатель в главном классе |
если EnemyTank ребенок Game, то главное - не забыть EnemyTank поставить mouseChildren = false;
попробуйте все потрейсить да посмотреть, что там как Код AS3:
|
А у Tank_mc в linkage id стоит EnemyTank или EnemyTank создает new Tank_mc(); и добавляет в себя?
|
или может быть Tank_mc это linkage и EnemyTank extends Tank_mc.. ?
|
Цитата:
Добавлено через 2 минуты Цитата:
|
и потом этот EnemyTank подписывается на CLICK?
|
Цитата:
|
приведи строку,где вешается слушатель CLICK
|
addEventListener(MouseEvent.CLICK, mouseClickHandler); данная старка выполняется в классе Games
Добавлено через 59 секунд а кликаю я по танку Tank_mc это мувик созданный классом EnemyBase |
бр, ты же сказал что EnemyTank создает Tank_mc и кладет в себя
|
по нажатию на Tank_mc я хочу вызывать методы класса EnemyBase
Добавлено через 36 секунд ой блин да да EnemyTank загнался извините |
Просто забудьте про event.target и используйте event.currentTarget.
Это в случае, если на клик подписан экземпляр класса EnemyTank. Иначе тащите parent. (Чего лучше не делать) |
тоже null
|
Вам нужно не
Код AS3:
Код AS3:
|
добавь в EnemyTank
Код AS3:
Код AS3:
|
Не понимаю, зачем так делать, не нужно же никаких mouseChildren, когда у тебя currentTarget тот, что ты сам подписал руками.
|
так он не танчики подписывает, а парента.
|
У этого подхода есть какие-то плюсы, кроме постоянной конфузии с event.target?
|
плюс в том, что одно событие на множество объектов. Никаких конфузий
|
Так а где плюс? Ну да, никаких, учитывая, сколько подобных тем уже.
|
Мы в итоге так и не поняли, как у тебя создается твой многострадальный танк.
Если у тебя сделано так, что есть класс Game, который Sprite (ну или MovieClip), который создает экземпляр и добавляет в себя EnemyTank Код AS3:
Код AS3:
Код AS3:
Код AS3:
Код AS3:
|
Цитата:
[object Game] [object Tank_mc] |
Цитата:
Цитата:
|
Цитата:
Если вы добавили в EnemyTank mouseChildren = false, то это говорит о том, что вы Tank_mc добавляете не внутрь него, а куда-то в другое место х) |
Цитата:
класс Games создает EnemyTank класс унаследован EnemyTank extends EnemyBase в конструкторе EnemyTank происходит следующее _sprite = new Tank_mc(); // Tank_mc мувик из библиотеки _sprite.mouseChildren = false; в конструкторе EnemyBase addChild(_sprite); сам слушатель кликанья инициализарован в классе games |
В конструкторе EnemyTank добавьте this.mouseChildren = false
Не _sprite.mouseChildren = false. |
теперь я понял в чем моя ошибка , друзья. всем большое спасибо!!!
|
| Часовой пояс GMT +4, время: 04:45. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.