Actionscript 3.0 Определение отправителя прослушивателя событий?
-
21-09-2019 - |
Вопрос
можно ли определить, какой объект вызывает функцию, на основе прослушивателя событий?например, у меня на сцене есть 2 кнопки, которые при нажатии вызывают одну и ту же функцию.мне бы хотелось, чтобы функция определяла, какая кнопка была отправителем.
firstButton.addEventListener(MouseEvent.CLICK, myFunction);
secondButton.addEventListener(MouseEvent.CLICK, myFunction);
function myFunction(e:MouseEvent):void
{
var myString:String = "The button that called this function was (??)";
trace(myString);
}
Решение
Используйте свойство текущая цель из Событие сорт
function myFunction(e:MouseEvent):void {
var myString:String = "The button that called this function was "+e.currentTarget;
trace(myString);
}
Другие советы
внутри myfunction e.currentTarget должен содержать ссылку на кнопку, отправившую событие.
я просто хочу добавить к этому:в объекте события, который вы получаете в функции, есть два свойства, которые иногда могут сбить с толку, чтобы различать их:
e.target — цель всегда будет возвращать вам исходный диспетчер события, поэтому, если вы нажали кнопку, но при прослушивании родителя, вашей целью все равно будет кнопка.
e.currentTarget — currentTarget возвращает запрошенный вами объект из события или на языке Adobe «Объект, который активно обрабатывает объект Event с помощью прослушивателя событий».".
поэтому ваш currentTarget и target могут давать разные результаты, и вам нужно иметь это в виду.п.с.если ваши события не всплывают (события мыши без визуального/невзаимодействия с пользователем), то ваши currentTarget и цель будут одинаковыми, или если вы спросите объект, который отправил событие, в случае пузырькового события.