Просмотр полной версии : Подскажыте с MouseEvent.CLICK и выбором обьекта
Killer_13
08.12.2009, 23:17
Есть у меня 3 кнопки, задум таков, чтоб при клике на каждую в другой клас отсылались значения 1,2,3.
когда нажалась кнопка 1 значение передается 1 и так д...
Че т немогу придумать..
делаю вот так..
var btn1:Buttons = new Buttons("Movie1fgh f f fg hgfhfg hgfh ");
btn1.x = 15;
btn1.y = 50;
btn1.addEventListener(MouseEvent.CLICK, click);
var btn2:Buttons = new Buttons("Movie2");
btn2.x = 15;
btn2.y = 150;
//btn2.addEventListener(MouseEvent.MOUSE_DOWN, click);
var btn3:Buttons = new Buttons("Movie3");
btn3.x = 15;
btn3.y = 250;
//btn2.addEventListener(MouseEvent.MOUSE_DOWN, click);
//вот.. как то так... чтоб в n запригывало 1 если нажата 1 кнопка, 2 вторая, 3 третья.
private function click(event:MouseEvent,n:int):void {
var v1:VideoLoader = new VideoLoader(n);
}
Спасибо.
Мечтатель
09.12.2009, 00:08
приемники для событий принимают один аргумент no more them one, которым является тип данных событийного объекта, никаких n туда не засунешь.
Кто мешает вам из приемника для события click обратится к объекту Buttons (e.carrentTarget) и извлечь из него свойство n?
Вы ведь в метод-конструктор класса Buttons передаете строковой аргумент, который, наверняка в конструкторе присваивается открытому свойству экземпляра этого класса.
1. В обработчик события передаётся только событие, никаких дополнительных параметров туда совать не надо, забудьте об этом.
2. У событие есть свойство target, оно содержит ссылку на объект, по которому юзер кликнул. Смотрите, какая это из нужных кнопок, и решайте что делать дальше.
Killer_13
09.12.2009, 00:39
Спасибо, - покопал в даном направлении - разобрался, вот решение.
private function click(event:MouseEvent):void {
switch (event.currentTarget){
case btn1:
var v1:VideoLoader = new VideoLoader(1);
break;
case btn2:
var v2:VideoLoader = new VideoLoader(2);
break;
case btn3:
var v3:VideoLoader = new VideoLoader(3);
break;
}
}
Лучше проверять target вместо currentTarget.
currentTarget указывает на объект, который поймал событие, target - на объект, который его послал.
Т.е. если бы вы повесили слушателя не а каждую кнопку, а на контейнер, в котором все кнопки находятся (а так обычно и делается, когда нужно отловить клик по одному из большого количества однородных объектов), currentTarget показал бы контейнер а не нажатую кнопку.
bicubic_bublic
09.12.2009, 02:36
Лучше проверять target вместо currentTarget.
currentTarget указывает на объект, который поймал событие, target - на объект, который его послал.
Т.е. если бы вы повесили слушателя не а каждую кнопку, а на контейнер, в котором все кнопки находятся (а так обычно и делается, когда нужно отловить клик по одному из большого количества однородных объектов), currentTarget показал бы контейнер а не нажатую кнопку.
target тоже может ошибиться.. если у вас "составные" кнопки, то таргетом может оказаться одна из частей, а не сама кнопка..
Killer_13
09.12.2009, 02:42
GAIKER
bicubic_bublic
спасибо за полезную информацию, сейчас исправлю :)
target тоже может ошибиться.. если у вас "составные" кнопки, то таргетом может оказаться одна из частей, а не сама кнопка..
Лечится при помощи mouseChildren = false
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.