Форум 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=122864)

loover 20.03.2009 00:58

программное нажатие кнопки
 
есть желание при попадании фокуса на кнопку-мувиклип после нажатия пробела имитировать клик (как в виндовс).
есть листенер, отлавливающий фокус:
Код AS3:

up_btn.addEventListener(FocusEvent.FOCUS_IN, btnFocus);

функция для фокуса:
Код AS3:

private function btnFocus(e:FocusEvent):void
        {
                e.target.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
        }

и сам обработчик:
Код AS3:

private function keyHandler(e:KeyboardEvent):void
        {
                if (e.keyCode == 32)
                {
                        e.target.MouseEvent.CLICK;
                }
        }

но при нажатии на прбел дебаггер пишет:
TypeError: Error #1010: A term is undefined and has no properties.
at ZZZ/::keyHandler()

cleptoman 20.03.2009 01:10

здается мне:
приведение типов
вызов сразу обработчика

AL.exe 20.03.2009 01:19

Цитата:

Код AS3:

e.target.MouseEvent.CLICK


И что Вы хотите этим сделать? о.О

Естественно, у e.target не будет никакого свойства под названием MouseEvent.

loover 20.03.2009 01:26

сделал так:
Код AS3:

e.target.dispatchEvent(new MouseEvent(MouseEvent.CLICK));

попутно возник вопрос: когда нужно использовать dispatchEvent, а когда addEventListener? и когда в последнем параметру useCapture задавать значение true?

AL.exe 20.03.2009 01:33

dispatchEvent - выстреливает событие, addEventListener - слушает событие. useCapture используется, если нужно отловить событие только на стадии захвата.

loover 20.03.2009 02:34

Цитата:

Сообщение от AL.exe (Сообщение 807051)
только на стадии захвата.

т.е. только один раз?

приведенный мною выше код вызова клика при нажатии на клавишу (или способ его вызова) имеет одну странную особенность: клик отсылается и в момент перехода на следующий объект.

Добавлено через 27 минут
все работает ок! )
ошибка была из-за конструкции:
Код AS3:

if (e.keyCode == 13 || 32)

исправил на:
Код AS3:

if (e.keyCode == 13 || e.keyCode == 32)

интересно, почему возникала ошибка?

Dante 20.03.2009 20:25

Цитата:

Сообщение от loover (Сообщение 807067)
т.е. только один раз?

приведенный мною выше код вызова клика при нажатии на клавишу (или способ его вызова) имеет одну странную особенность: клик отсылается и в момент перехода на следующий объект.

Добавлено через 27 минут
все работает ок! )
ошибка была из-за конструкции:
Код AS3:

if (e.keyCode == 13 || 32)

исправил на:
Код AS3:

if (e.keyCode == 13 || e.keyCode == 32)

интересно, почему возникала ошибка?

потому что
Код AS3:

if (e.keyCode == 13 || 32)  //всегда равен true



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

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