Форум 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)

razerw 08.11.2017 09:28

MouseEvent ссылка на объект
 
Добрый день друзья, столкнулся с такой проблемой. требуется ваша помощь.
установил слушатель MouseEvent.CLICK в функции mouseClickHandler отлавливаю событие.
на сцене у меня находится танк я по нему счелкую и трейсю trace(event.target);
получаю сообщение о том что я кликаю по объекту [object Tank_mc]. и вот вопрос как мне обратиться к функциям и методам данного объекта? Tank_mc это мувик из библиотека, инициализировал его класс EnemyTank.

undefined 08.11.2017 10:56

Код AS3:

var tank:EnemyTank=e.target as EnemyTank;
if(tank)
    tank.tankMethod();


ZackMercury 08.11.2017 11:19

Если подписан на клик EnemyTank, то
Код AS3:

var tank:EnemyTank = e.currentTarget as EnemyTank;
if(tank)
    tank.tankMethod();


razerw 08.11.2017 11:43

Цитата:

Сообщение от undefined (Сообщение 1202794)
Код AS3:

var tank:EnemyTank=e.target as EnemyTank;
if(tank)
    tank.tankMethod();


trace(tank) выдает null

ZackMercury 08.11.2017 11:58

лол, а на что у вас слушатель CLICK повешен?

razerw 08.11.2017 12:18

Цитата:

Сообщение от ZackMercury (Сообщение 1202797)
лол, а на что у вас слушатель CLICK повешен?

ну вообще есть класс Game данный класс создает объект EnemyTank
как раз в классе Game и инициализаруется слушатель CLICK

Добавлено через 1 минуту
я знаю что можно понапихать MouseEvent.CLICK в сами объекты EnemyTank и они будут выдавать то что мне нужно, но если у меня будет 20 танков, это будет расточительство, поэтому я и инициализирую 1 слушатель в главном классе

ZergMaster 08.11.2017 12:38

если EnemyTank ребенок Game, то главное - не забыть EnemyTank поставить mouseChildren = false;
попробуйте все потрейсить да посмотреть, что там как

Код AS3:

trace(event.target)
var tank:EnemyTank = event.target as EnemyTank;
trace(tank)
if(tank)
    tank.tankMethod();


undefined 08.11.2017 12:40

А у Tank_mc в linkage id стоит EnemyTank или EnemyTank создает new Tank_mc(); и добавляет в себя?

ZergMaster 08.11.2017 12:43

или может быть Tank_mc это linkage и EnemyTank extends Tank_mc.. ?

razerw 08.11.2017 12:45

Цитата:

Сообщение от undefined (Сообщение 1202802)
А у Tank_mc в linkage id стоит EnemyTank или EnemyTank создает new Tank_mc(); и добавляет в себя?

совершенно верно

Добавлено через 2 минуты
Цитата:

Сообщение от ZergMaster (Сообщение 1202804)
или может быть Tank_mc это linkage и EnemyTank extends Tank_mc.. ?

Tank_mc это мувик находится в библиотеке. EnemyTank делает вот так _sprite = new Tank_mc(); а потом add


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

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