Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Определить какая кнопка нажата (http://www.flasher.ru/forum/showthread.php?t=145288)

Robotex 04.10.2010 06:51

Определить какая кнопка нажата
 
Есть код:
Код AS3:

public class Keyboard extends MovieClip
        {
                private var _keys:Array;
 
                public function PianoKeyboard()
                {
                        this.addEventListener(Event.ADDED_TO_STAGE, stageHandler, false, 0, true);
                }
 
                private function stageHandler(event:Event):void
                {
                        _keys = []; // в этом месте добавляем в массив кнопки - убрано ради экономии места
 
                        for(var i:int=0;i<_keys.length;i++)
                        {
                                _keys[i].Init(keyHandler); // цепляем на кнопку слушатель
                        }
                }
 
                private function keyHandler():void
                {
                        MessagesController.dispatcher.dispatchEvent(new Event("keyboard_key_pressed"));
                }
 
        }

Функция Init принимает функцию и цепляет ее на событие MouseEvent.CLICK.

Но в таком случае, все кнопки выполняют одно и тоже действие. А вот как прицепить на каждую разное (т.е. как дать понять обработчику события keyboard_key_pressed какая из кнопок нажата)

Кнопка самодельная и лучше бы обойтись без ее модификации.

-De- 04.10.2010 09:39

http://www.flasher.ru/forum/blog.php?b=239
Рекомендую, чтоб в этот ваш _keys[i].Init(keyHandler); можно было параметр типа номер кнопки закинуть, _keys[i].Init(keyHandler, i); который в keyHandler передается.

Psycho Tiger 04.10.2010 12:05

Цитата:

_keys = []; // в этом месте добавляем в массив кнопки - убрано ради экономии места
О каких кнопках речь?

Robotex 04.10.2010 12:58

Цитата:

Сообщение от -De- (Сообщение 940621)
http://www.flasher.ru/forum/blog.php?b=239
Рекомендую, чтоб в этот ваш _keys[i].Init(keyHandler); можно было параметр типа номер кнопки закинуть, _keys[i].Init(keyHandler, i); который в keyHandler передается.

Саму кнопку модифицировать не хотелось бы, но можно создать класс, который будет унаследован от нее и там творить, что угодно. И кажется до меня дошло :) Дома попробую :)

-De- 04.10.2010 15:42

Если вам кнопка нужна, чтоб её нажимали, то неплохо бы к ней заодно прикрутить интерфейс для того, чтоб это нажатие обрабатывать удобно. А кнопкам таки часто параметры передаются. Ни разу не жалел, что к кнопкам сравнительно тяжелый обработчик прикрутил, их не может быть много, или юзер тупить начнет.


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

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