![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2012
Сообщений: 5
|
Всем привет.
Задача элементарная. Создаем ряд графических объектов. Кликаем по ним мышью - функция слушатель должна возвращать имя графического объекта. Моя реализация package towns { import flash.display.*; import flash.events.MouseEvent; public class Game extends Sprite { private var checkedTown:String; public function Game() { var circle:Sprite=new Sprite(); circle.graphics.lineStyle(1); circle.graphics.beginFill(989898,1); circle.graphics.drawCircle(200,100,10); addChild(circle); addEventListener(MouseEvent.CLICK, mouseUpListener); } private function mouseUpListener(e:MouseEvent){ trace (e.target) } } } Подскажите, как быть? Кстати нигде не нашел толкового руководства по этому вопросу. То есть описание всех методов e.target |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Что значит "возвращать имя"? Какое имя? Где это имя хранится?
|
|
|||||
|
Регистрация: Feb 2012
Сообщений: 68
|
есть 2 свойства:
e.target и e.currentTarget e.currentTarget выдает ссылку непосредственно на "получатель события" (обьект, события которого вы слушаете). e.target выдает ссылку на обьект, на который вы непосредственно нажали (при MouseEvent). допустим есть мувик mc, в нем лежит мувик mcIn, тогда при срабатывании события: как понятно из кода, написанного выше, при диспетчиризации событий отправляется событийный обьект (обьект MouseEvent), вам надо обращаться к свойству e.target.name(или e.currentTarget.name) в "приемнике событий"(функции, выполняющейся при возникновении событий), чтобы получить имя получателя события. |
|
|||||
|
Регистрация: May 2012
Сообщений: 5
|
Я добавляю на stage circle1, circle2, circle3 и т.д.
Сейчас у меня в программе только circle. Хоть e.target хоть e.currentTarget выдаст не circle1 (circle2, circle3 и т.д.) , а [object Sprite], [object Sprite], [object Sprite]. e.target.name(или e.currentTarget.name) выводит instance1. Как я понимаю instance1 - это глубина в списке отображения. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2012
Сообщений: 5
|
Ок.
Допустим у нас есть , например прямоугольник, цвет заливки которого задается переменной . Цвет будет выбираться путем нажатия на соответствующий кружок. Я могу воспользоваться таким кодом функции приемника? |
|
|||||
|
Регистрация: Sep 2006
Сообщений: 145
|
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
В конкретике вопрос лишен смысла — кто знает, что у Вас там нажимается и на какие объекты вешался слушатель. Может, target, а может и currentTarget. Сам принцип — да, один из возможных. Другой — иметь у "кнопок" какой-то идентификатор, например тот же name, и проверять по нему. Или хранить значения для color прямо в кнопках и брать их оттуда напрямую в хендлере, без батареи свитчей. Или хранить цвета в справочнике, привязанными к ключам-кнопкам. Разные способы есть.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2012
Сообщений: 5
|
Всем спасибо. Проверил. Инстанс Нейм мне подошел, мой код подошел.
Остался один вопрос. Где же все-таки прочитать о всех методах e.target. В справке Адоба какие-то куцые сведения. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Никто не ответит, потому что у e.target нет никаких методов. Это просто свойство, указывающее на экземпляр, класс которого не указан в самом типе свойства, то есть неизвестен до факта инициализации свойства. Нет класса — нет методов. Сформулируйте вопрос иначе, может, "своими словами", как говорили в советской школе)) Что Вас интересует?
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|