PDA

Просмотр полной версии : Подскажыте с 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 передаете строковой аргумент, который, наверняка в конструкторе присваивается открытому свойству экземпляра этого класса.

Gaen
09.12.2009, 00:11
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;

}
}

Gaen
09.12.2009, 02:29
Лучше проверять 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

спасибо за полезную информацию, сейчас исправлю :)

Gaen
09.12.2009, 07:08
target тоже может ошибиться.. если у вас "составные" кнопки, то таргетом может оказаться одна из частей, а не сама кнопка..
Лечится при помощи mouseChildren = false