キーコードからキーの名前を取得する

2013/11/03 | 所要時間 約1分

as3では、Keyboardクラスを使うとキーコードを取得できるんだけど、キーの名前を取得したい。

String.fromCharCode()を使えば取得できるんだけど、SHIFTキーとかはちゃんと表示してくれなかったり、完璧じゃない。

trace( String.fromCharCode(Keyboard.D)) //D
trace( String.fromCharCode(Keyboard.SHIFT))

ので、ちゃんと取得できるようにする。

describeType()を使えばプロパティ名をStringとして取得できるので、それを利用してキーの名前を取得してみる。

import flash.utils.describeType;
import flash.utils.Dictionary;

function getKeyboardDict():Dictionary {
    var keyDescription:XML = describeType(Keyboard);
    var keyNames:XMLList = keyDescription..constant.@name;

    var keyboardDict:Dictionary = new Dictionary();

    var len:int = keyNames.length();
    for(var i:int = 0; i < len; i++) {
        keyboardDict[Keyboard[keyNames[i]]] = keyNames[i];
    }

    return keyboardDict;
}

var keyDict:Dictionary = getKeyboardDict();

trace(keyDict[Keyboard.UP]); //UP
trace(keyDict[Keyboard.SHIFT]); //SHIFT

String.fromCharCode()で表示できなかったキーも表示できるようになった。

2013/11/03

プロフィールアイコン

ton

何でもやりたいエンジニア

趣味でFlash作って遊んでいたらプログラマーになってしまいました。

仕事ではSNSの運用したり、ゲーム作ったり、webサービス作ったり、アプリ作ったり、色々してます。