2013-11-02 3 views
2

데스크톱 런타임 용 Adobe AIR 3.4를 사용하여 Flash CS6에서 Actionscript 3을 사용하고 있습니다.키 코드를 Actionscript 3의 문자열로 변환

는 못해 분명 (예 이하 D 최대 38 및 68 인 경우)

var KEY_UP:uint = Keyboard.UP; 
var KEY_D:uint = Keybaord.D; 

하지만, I는 (사용자에게 키에 키를 표시 할 필요가 정수 값으로 정의 된 특정 키 코드를 가지고 정수 값 표시).

어떻게 이러한 키보드 값을 "Up"또는 "D"(38 및 68 대신)와 같은 문자열 값으로 변환 할 수 있습니까?

+1

시도 :'추적 (대신 String.fromCharCode (Keyboard.D이))',하지만 UP' '의 경우 정말 유용 쓸모 – Cherniv

+0

입니다, 감사합니다. 그러나 'UP'이나 'SHIFT'와 같은 키를 얻기 위해 할 수있는 일이 있습니까? –

답변

7

describeType으로 속성 이름을 가져올 수 있으며 Keyboard["UP"]과 같은 String으로 속성에 액세스 할 수 있습니다.

그래서 테이블을 만들 수 있습니다. 예를 들어 당신이 Haxe로 OpenFL를 사용하는 경우

import flash.utils.describeType; 

function getKeyboardDict():Dictionary { 
    var keyDescription:XML = describeType(Keyboard); 
    var keyNames:XMLList = [email protected]; 

    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 
+1

고마워요. 완벽하게 작동합니다. –

+0

Brilliant. 나는이 코드에 매혹되어있다. 고마워! 나는 그것이 5 년 전이지만 아직도 알고있다. –

0

를 들어, openfl/uiKeyboard.hx에 갈 수 및 문자열에 대한 키 코드를 생성하는 파일의 내용에 (빔 또는 gedit에서처럼) 텍스트 편집기에서 정규 표현식을 사용하여 사전.

사용이 스위치를 만들 수 있습니다 :

:%s/\([A-Z_0-9]*\)\ =\ \([0-9]*\)/case \2\: return "\1"/g