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

goldlider 05.10.2011 17:44

Клавиши расположенные в нескольких местах
 
Возникла проблема такого рода. При нажатии левого или правого Shift в Output ничего не пишет. Ось - Mac OS X, раскладка - U.S. English.

Код AS3:

package
{
        import flash.display.*;
        import flash.events.*;
        import flash.ui.*;
 
        public class KeyDuplicate extends Sprite
        {
 
                public function KeyDuplicate()
                {
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
                }
 
                private function keyDownListener(e:KeyboardEvent):void
                {
                        if (e.keyCode == Keyboard.SHIFT)
                        {
                                if (e.keyLocation == KeyLocation.LEFT)
                                {
                                        trace("The left Shift key was pressed");
                                }
                                else if (e.keyLocation == KeyLocation.RIGHT)
                                {
                                        trace("The right Shift key was pressed");
                                }       
                        }
                }
        }
}


Genzo 05.10.2011 18:03

где-то я читал ,что мак не имеет различия между левым и правым шифтом

Добавлено через 1 минуту
http://answers.unity3d.com/questions...-both-key.html

trng 05.10.2011 18:05

Как минимум - надо добавить еще два trace.
Перед if (e.keyCode == Keyboard.SHIFT).
И после if (e.keyCode == Keyboard.SHIFT).

Что пишет?

goldlider 05.10.2011 18:10

Цитата:

Сообщение от trng (Сообщение 1037049)
Как минимум - надо добавить еще два trace.
Перед if (e.keyCode == Keyboard.SHIFT).
И после if (e.keyCode == Keyboard.SHIFT).

Что пишет?

Как смысл добавлять, если эти клавиши имеют один тот же код = 16. Если написать перед if, выводит сообщение о том что Shift нажат.
А на винде данный код работает?

trng 05.10.2011 18:10

Цитата:

Сообщение от Genzo (Сообщение 1037047)
где-то я читал ,что мак не имеет различия между левым и правым шифтом

Добавлено через 1 минуту
http://answers.unity3d.com/questions...-both-key.html

Там написано про "обратную" проблему - В обоих случаях trace срабатывает.

goldlider 05.10.2011 18:14

Цитата:

Сообщение от trng (Сообщение 1037054)
Там написано про "обратную" проблему

там это где?
Цитата:

Сообщение от trng (Сообщение 1037054)
В обоих случаях trace срабатывает.

Код AS3:

private function keyDownListener(e:KeyboardEvent):void
{
        trace("The Shift key was pressed"); // Срабатывает
 
        if (e.keyCode == Keyboard.SHIFT)
        {
                if (e.keyLocation == KeyLocation.LEFT)
                {
                        trace("The left Shift key was pressed"); // Не срабатывает
                }
                else if (e.keyLocation == KeyLocation.RIGHT)
                {
                        trace("The right Shift key was pressed"); // Не срабатывает
                }       
        }
        trace("The Shift key was pressed"); // Срабатывает
}


trng 05.10.2011 18:17

Цитата:

А на винде данный код работает?
Работает.
The left Shift key was pressed
The right Shift key was pressed

Добавлено через 2 минуты
А так?
Код AS3:

private function keyDownListener(e:KeyboardEvent):void
{
        trace("The Shift key was pressed"); // Срабатывает
 
        if (e.keyCode == Keyboard.SHIFT)
        {
                trace("e.keyCode == Keyboard.SHIFT");
                if (e.keyLocation == KeyLocation.LEFT)
                {
                        trace("The left Shift key was pressed"); // Не срабатывает
                }
                else if (e.keyLocation == KeyLocation.RIGHT)
                {
                        trace("The right Shift key was pressed"); // Не срабатывает
                }       
        }
 
}


Цитата:

там это где?
http://answers.unity3d.com/questions...-both-key.html
Вот:
Unity console will return both "Left Shift" and "Right Shift" each time the key is pressed. This also happens if I specifically bind the "left shift" and "right shift" keys to an input in the Input Manager.

Genzo 05.10.2011 18:40

Цитата:

Mac doesn't send different commands for each key.
!!!
Цитата:

Unity console will return both "Left Shift" and "Right Shift" each time the key is pressed. This also happens if I specifically bind the "left shift" and "right shift" keys to an input in the Input Manager.
Это потому что там событие ловит keyCode а не keyLocation
Код AS3:

        if (Input.GetKeyDown(KeyCode.LeftShift)) {
        Debug.Log("Left Shift");
    }
 
    if (Input.GetKeyDown(KeyCode.RightShift)) {
        Debug.Log("Right Shift");
    }


goldlider 05.10.2011 18:44

Короче, я так понял, что конкретного ответа на данный вопрос нету применительно к Flash IDE.

in4core 05.10.2011 19:00

goldlider вы хоть попроьбовали хоть раз заменить keyLocation на keyBoard и keyCode ? Помоему нет


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

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