Flash CS3 설명서 |
|||
| ActionScript 3.0 프로그래밍 > 클라이언트 시스템 환경 > IME 클래스 사용 | |||
IME 클래스를 사용하면 Flash Player 내에 있는 운영 체제의 IME를 조작할 수 있습니다.
ActionScript를 사용하여 다음을 확인할 수 있습니다.
Capabilities.hasIME)IME.enabled)IME.conversionMode)입력 텍스트 필드를 특정 IME 컨텍스트에 연결시킬 수 있습니다. 입력 필드 간에 전환할 때 IME를 히라가나(일본어), 최대 폭 숫자, 반폭 숫자, 직접 입력 등으로 서로 전환할 수도 있습니다.
IME를 사용하면 한국어, 중국어 및 일본어 등 ASCII가 아닌 멀티바이트 언어 텍스트 문자를 입력할 수 있습니다.
IME 사용에 대한 자세한 내용은 개발 중인 응용 프로그램을 실행할 운영 체제의 설명서를 참조하십시오. 추가 리소스를 보려면 다음 웹 사이트를 참조하십시오.
|
중요 |
|
사용자의 컴퓨터에 IME가 활성화되어 있지 않으면 |
IME 메서드나 속성을 호출하기 전에 현재 사용자의 컴퓨터에 IME가 설치되어 있으며 활성화되어 있는지 항상 확인해야 합니다. 다음 코드는 메서드를 호출하기 전에 IME가 설치 여부 및 활성화 여부를 확인하는 방법을 보여 줍니다.
if (Capabilities.hasIME)
{
if (IME.enabled)
{
trace("IME is installed and enabled.");
}
else
{
trace("IME is installed but not enabled. Please enable your IME and try again.");
}
}
else
{
trace("IME is not installed. Please install an IME and try again.");
}
앞의 코드는 먼저 Capabilities.hasIME 속성을 사용하여 IME 설치 여부를 확인합니다. 이 속성이 true로 설정되어 있으면 이 코드가 IME.enabled 속성을 사용하여 사용자의 IME가 현재 활성화되어 있는지 여부를 확인합니다.
다국어 응용 프로그램을 작성할 때 사용자가 현재 활성화되어 있는 변환 모드를 확인해야 할 수 있습니다. 다음 코드는 메서드를 호출하기 전에 IME 설치 여부 확인 방법 및 IME가 설치된 경우 현재 활성화된 IME 변환 모드 확인 방법을 보여 줍니다.
if (Capabilities.hasIME)
{
switch (IME.conversionMode)
{
case IMEConversionMode.ALPHANUMERIC_FULL:
tf.text = "Current conversion mode is alphanumeric (full-width).";
break;
case IMEConversionMode.ALPHANUMERIC_HALF:
tf.text = "Current conversion mode is alphanumeric (half-width).";
break;
case IMEConversionMode.CHINESE:
tf.text = "Current conversion mode is Chinese.";
break;
case IMEConversionMode.JAPANESE_HIRAGANA:
tf.text = "Current conversion mode is Japananese Hiragana.";
break;
case IMEConversionMode.JAPANESE_KATAKANA_FULL:
tf.text = "Current conversion mode is Japanese Katakana (full-width).";
break;
case IMEConversionMode.JAPANESE_KATAKANA_HALF:
tf.text = "Current conversion mode is Japanese Katakana (half-width).";
break;
case IMEConversionMode.KOREAN:
tf.text = "Current conversion mode is Korean.";
break;
default:
tf.text = "Current conversion mode is " + IME.conversionMode + ".";
break;
}
}
else
{
tf.text = "Please install an IME and try again.";
}
앞의 코드는 먼저 IME의 설치 여부를 확인합니다. 다음으로 IMEConversionMode 클래스의 각 상수와 IME.conversionMode 속성을 비교하여 현재 IME에서 사용하고 있는 변환 모드를 확인합니다.
IME에서 변환 모드를 설정할 수 없는 경우에 conversionMode 속성을 사용하여 변환 모드를 설정하면 오류가 발생할 수 있으므로 사용자의 IME 변환 모드를 변경할 때 코드가 try..catch 블록에서 래핑되는지 확인해야 합니다. 다음 코드는 IME.conversionMode 속성을 설정할 때 try..catch 블록을 사용하는 방법을 보여 줍니다.
var statusText:TextField = new TextField;
statusText.autoSize = TextFieldAutoSize.LEFT;
addChild(statusText);
if (Capabilities.hasIME)
{
try
{
IME.enabled = true;
IME.conversionMode = IMEConversionMode.KOREAN;
statusText.text = "Conversion mode is " + IME.conversionMode + ".";
}
catch (error:Error)
{
statusText.text = "Unable to set conversion mode.\n" + error.message;
}
}
앞의 코드는 먼저 사용자에게 상태 메시지를 표시하는 데 사용되는 텍스트 필드를 만듭니다. 그 다음에는 IME가 설치되어 있는 경우 이 코드가 IME를 활성화하고 변환 모드를 한국어로 설정합니다. 사용자의 컴퓨터에 한국어 IME가 설치되어 있지 않으면 Flash Player에서 오류가 throw되어 try..catch 블록에서 이 오류가 catch됩니다. try..catch 블록은 앞에서 만든 텍스트 필드에 오류 메시지를 표시합니다.
경우에 따라 문자를 입력할 때 사용자의 IME를 비활성화할 수 있습니다. 예를 들어, 숫자만 입력할 수 있는 텍스트 필드가 있는 경우 IME를 사용하지 않고 천천히 데이터를 입력할 수 있습니다.
다음 예제는 FocusEvent.FOCUS_IN 및 FocusEvent.FOCUS_OUT 이벤트를 수신하고 그에 따라 사용자의 IME를 비활성화하는 방법을 보여줍니다.
var phoneTxt:TextField = new TextField();
var nameTxt:TextField = new TextField();
phoneTxt.type = TextFieldType.INPUT;
phoneTxt.addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
phoneTxt.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
phoneTxt.restrict = "0-9";
phoneTxt.width = 100;
phoneTxt.height = 18;
phoneTxt.background = true;
phoneTxt.border = true;
addChild(phoneTxt);
nameField.type = TextFieldType.INPUT;
nameField.x = 120;
nameField.width = 100;
nameField.height = 18;
nameField.background = true;
nameField.border = true;
addChild(nameField);
function focusInHandler(event:FocusEvent):void
{
if (Capabilities.hasIME)
{
IME.enabled = false;
}
}
function focusOutHandler(event:FocusEvent):void
{
if (Capabilities.hasIME)
{
IME.enabled = true;
}
}
다음 예제는 phoneTxt와 nameTxt라는 두 가지 입력 텍스트 필드를 만든 다음 두 개의 이벤트 리스너를 phoneTxt 텍스트 필드에 추가합니다. 사용자가 phoneTxt 텍스트 필드를 강조하도록 설정하면 FocusEvent.FOCUS_IN 이벤트가 전달되고 IME가 비활성화됩니다. phoneTxt 텍스트 필드가 강조되지 않으면 FocusEvent.FOCUS_OUT 이벤트가 전달되어 IME를 다시 활성화합니다.
구성 문자열을 설정하면 IME 구성 이벤트가 전달됩니다. 예를 들어, 사용자가 IME를 활성화하고 일본어로 문자열을 입력한 경우 사용자가 구성 문자열을 선택하는 즉시 IMEEvent.IME_COMPOSITION 이벤트가 전달됩니다. IMEEvent.IME_COMPOSITION 이벤트를 수신하려면 다음 예제와 같이 이벤트 리스너를 System 클래스(flash.system.System.ime.addEventListener(...))의 정적 ime 속성에 추가해야 합니다.
var inputTxt:TextField;
var outputTxt:TextField;
inputTxt = new TextField();
inputTxt.type = TextFieldType.INPUT;
inputTxt.width = 200;
inputTxt.height = 18;
inputTxt.border = true;
inputTxt.background = true;
addChild(inputTxt);
outputTxt = new TextField();
outputTxt.autoSize = TextFieldAutoSize.LEFT;
outputTxt.y = 20;
addChild(outputTxt);
if (Capabilities.hasIME)
{
IME.enabled = true;
try
{
IME.conversionMode = IMEConversionMode.JAPANESE_HIRAGANA;
}
catch (error:Error)
{
outputTxt.text = "Unable to change IME.";
}
System.ime.addEventListener(IMEEvent.IME_COMPOSITION, imeCompositionHandler);
}
else
{
outputTxt.text = "Please install IME and try again.";
}
function imeCompositionHandler(event:IMEEvent):void
{
outputTxt.text = "you typed: " + event.text;
}
앞의 코드는 두 개의 텍스트 필드를 만들고 해당 필드를 표시 목록에 추가합니다. 첫 번째 텍스트 필드인 inputTxt는 사용자가 일본어 텍스트를 입력할 수 있는 입력 텍스트 필드입니다. 두 번째 텍스트 필드인 outputTxt는 사용자에게 오류 메시지를 표시하거나 사용자가 inputTxt 텍스트 필드에 입력한 일본어 문자열을 반복하여 표시하는 동적 텍스트 필드입니다.
Flash CS3
이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서
현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/main/00000328.html