| ActionScript 3.0 ÀÇ ÇÁ·Î±×·¡¹Ö > Flash Player API > Ŭ¶óÀ̾ðÆ®ÀÇ ½Ã½ºÅÛ È¯°æ > IME Ŭ·¡½º | |||
IME Ŭ·¡½º
IME Ŭ·¡½º¸¦ »ç¿ëÇϸé, operating systemÀÇ IME (Input Method Editor)¸¦ Flash Player ³»¿¡¼ Á¶ÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.
ActionScript ·ÎºÎÅÍ, ´ÙÀ½ÀÏÇ×À» Á¶»çÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
- À¯ÀúÀÇ ÄÄÇ»ÅÍ¿¡ IME °¡ ¼³Ä¡(Install) µÇ°í ÀÖ´ÂÁö ¾î¶²Áö (
Capabilities.hasIME) - À¯ÀúÀÇ ÄÄÇ»ÅÍ·Î IME °¡ À¯È¿ÇÏ°Ô µÇ¾î ÀÖ´ÂÁö ¾î¶²Áö (
IME.enabled) - ÇöÀçÀÇ IME ·Î »ç¿ëµÇ°í ÀÖ´Â º¯È¯ ¸ðµå (
IME.conversionMode)
ÅØ½ºÆ® ÀÔ·Â Çʵ带 ƯÁ¤ÀÇ IME ¹®¸Æ¿¡ °ü·ÃÁöÀ» ¼ö°¡ ÀÖ½À´Ï´Ù. ±×°Í¿¡ ÀÇÇØ, ÀÔ·Â Çʵ尣À» Æ÷Ä¿½º°¡ À̵¿Çϴµ¥ µû¶ó¼ IME ÀÇ º¯È¯ ¸ðµå (È÷¶ó°¡³ª, Àü°¢ ¼ýÀÚ, ¹Ý°¢ ¼ýÀÚ, Á÷Á¢ ÀԷµî)ÀÇ º¯È¯ÀÌ »ý±é´Ï´Ù.
IME ¸¦ »ç¿ëÇϸé, Áß±¹¾î, ÀϺ»¾î, Çѱ¹¾î¶ó°í ÇÏ´Â ¸ÖƼ ¹ÙÀÌÆ®ÀÇ ¾ð¾î·Î ASCII ÀÌ¿ÜÀÇ Ä³¸¯Å͸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
IME ÀÇ »ç¿ë ¹æ¹ýÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â, ¾îÇø®ÄÉÀ̼ÇÀÇ °³¹ß ´ë»óÀÎ operating systemÀÇ ¸Þ´º¾óÀ» ÂüÁ¶ÇØ ÁÖ¼¼¿ä. Ãß°¡ Á¤º¸¿¡ ´ëÇØ¼´Â, ´ÙÀ½ÀÇ Web »çÀÌÆ®¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
- http://www.microsoft.com/globaldev/default.mspx
- http://developer.apple.com/documentation/
- http://java.sun.com/
|
¸Þ¸ð |
|
IME °¡ À¯ÀúÀÇ ÄÄÇ»Åͻ󿡼 ¾×ƼºêÇÏÁö ¾ÊÀº °æ¿ì, IME ÀÇ ¸Þ¼Òµå ¶Ç´Â properties ÀÇ È£ÃâÀº, |
ºÎ ÁÖÁ¦
IME °¡ ¼³Ä¡(Install) µÇ°í À¯È¿ÇÏ°Ô µÇ°í ÀÖ´ÂÁö ¾î¶²ÁöÀÇ È®ÀÎ
IME ÀÇ ¸Þ¼Òµå ¶Ç´Â properties ¸¦ È£ÃâÇϱâ Àü¿¡, ¹Ýµå½Ã À¯ÀúÀÇ ÄÄÇ»Å͸¦ Á¶»çÇØ IME °¡ ÇöÀç ¼³Ä¡(Install) µÇ°í À¯È¿ÇÏ°Ô µÇ°í ÀÖ´ÂÁö ¾î¶²Áö¸¦ È®ÀÎÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ´ÙÀ½ÀÇ ÄÚµå´Â, ¸î°³ÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇϱâ Àü¿¡, À¯Àú°¡ IME ¸¦ ¼³Ä¡(Install)ÀÌ ³¡³ »óÅ·Î, ±×°ÍÀÌ ¾×ƼºêÇÑÁö ¾î¶²Áö¸¦ È®ÀÎÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù.
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 properties ¸¦ »ç¿ëÇØ, À¯Àú°¡ IME ¸¦ ¼³Ä¡(Install) µÇ¾î ÀÖÀ»Áö ¾î¶³Áö¸¦ È®ÀÎÇÕ´Ï´Ù. ÀÌ properties °¡ true ·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì´Â, ´ÙÀ½¿¡ IME.enabled properties ¸¦ »ç¿ëÇØ, À¯ÀúÀÇ IME °¡ ÇöÀç À¯È¿ÇÏ°Ô µÇ°í ÀÖ´ÂÁö ¾î¶²Áö¸¦ È®ÀÎÇÕ´Ï´Ù.
¾î´À IME º¯È¯ ¸ðµå°¡ ÇöÀç À¯È¿ÇѰ¡ÀÇ ÆÇº°
º¹¼ö ¾ð¾î ¾îÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÒ ¶§´Â, À¯Àú°¡ ÇöÀç ¾î´À º¯È¯ ¸ðµå¸¦ ¾×ƼºêÇÏ°Ô Çϰí ÀÖ´ÂÁö¸¦ ÆÇº°ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÑ °æ¿ìµµ ÀÖ½À´Ï´Ù. ´ÙÀ½ÀÇ ÄÚµå´Â, À¯Àú°¡ IME ¸¦ ¼³Ä¡(Install) µÇ¾î ÀÖÀ»Áö ¾î¶³Áö, ¶Ç, ¼³Ä¡(Install) µÇ¾î ÀÖ´Â °æ¿ì´Â, ¾î´À 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 ¸¦ ¼³Ä¡(Install) µÇ¾î ÀÖÀ»Áö ¾î¶³Áö¸¦ È®ÀÎÇÕ´Ï´Ù. ´ÙÀ½¿¡, ÇöÀçÀÇ IME °¡ ¾î´À º¯È¯ ¸ðµå¸¦ »ç¿ëÇϰí ÀÖ´ÂÁö¸¦ È®ÀÎÇϱâ À§Çؼ,IME.conversionMode properties ¸¦ IMEConversionMode Ŭ·¡½º³»ÀÇ °¢°¢ÀÇ Á¤¼ö·Î Á¶ÇÕÇÕ´Ï´Ù.
IME º¯È¯ ¸ðµåÀÇ ¼³Á¤
À¯ÀúÀÇ IME ÀÇ º¯È¯ ¸ðµå¸¦ º¯°æÇÒ ¶§´Â, Äڵ尡 try..catch ºí·Ï³»¿¡ ·¦ µÇ°í ÀÖ´Â °ÍÀ» È®ÀÎÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¿Ö³ÄÇϸé,conversionMode properties ¸¦ »ç¿ëÇØ º¯È¯ ¸ðµå¸¦ ¼³Á¤Çϸé, IME °¡ º¯È¯ ¸ðµå¸¦ ¼³Á¤ÇÒ ¼ö ¾ø´Â °æ¿ì¿¡ ¿¡·¯°¡ ½½·Î¿ì µÉ °¡´É¼ºÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. ´ÙÀ½ÀÇ ÄÚµå´Â,IME.conversionMode properties ¸¦ ¼³Á¤ÇÒ ¶§ÀÇ 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 °¡ ¼³Ä¡(Install) µÇ°í ÀÖ´Â °æ¿ì, IME ¸¦ À¯È¿ÇÏ°Ô ÇØ º¯È¯ ¸ðµå¸¦ Çѱ¹¾î·Î ¼³Á¤ÇÕ´Ï´Ù. À¯ÀúÀÇ ÄÄÇ»ÅÍ¿¡ Çѱ¹¾î IME °¡ ¼³Ä¡(Install)µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â Flash Player ¿¡ ÀÇÇØ ¿¡·¯°¡ ½½·Î¿ì µÇ¾îtry..catch ºí·Ï¿¡ ÀÇÇØ ijġ µË´Ï´Ù. try..catch ºí·ÏÀº, Àü¿¡ ÀÛ¼ºµÈ ÅØ½ºÆ® Çʵ忡 ¿¡·¯ ¸Þ¼¼Áö¸¦ Ç¥½ÃÇÕ´Ï´Ù.
ƯÁ¤ÀÇ ÅØ½ºÆ® Çʵ忡 ´ëÇÑ IME ÀÇ ¹«È¿È
°æ¿ì¿¡ µû¶ó¼´Â, À¯Àú°¡ ij¸¯Å͸¦ ÀÔ·ÂÇÏ´Â µ¿¾È, À¯ÀúÀÇ 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 ¶ó°í ÇÏ´Â 2 °³ÀÇ ÀÔ·Â ÅØ½ºÆ® Çʵ带 ÀÛ¼ºÇÑ ÈÄ, 2 °³ÀÇ event listener¸¦ phoneTxt ÅØ½ºÆ® Çʵ忡 Ãß°¡ÇÕ´Ï´Ù. À¯Àú°¡ phoneTxt ÅØ½ºÆ® Çʵ忡 Æ÷Ä¿½º¸¦ ¼³Á¤Çϸé,FocusEvent.FOCUS_IN À̺¥Æ®°¡ ¼ÛÃâ(Dispatch)µÇ¾î IME ´Â ¹«È¿°¡ µË´Ï´Ù. phoneTxt ÅØ½ºÆ® Çʵ尡 Æ÷Ä¿½º¸¦ ÀÒÀ¸¸é,FocusEvent.FOCUS_OUT À̺¥Æ®°¡ ¼ÛÃâ(Dispatch)µÇ¾î IME °¡ ´Ù½Ã À¯È¿ÇÏ°Ô µË´Ï´Ù.
IME ÀÔ·Â À̺¥Æ®°¡ ±â´Ù¸®°í
IME ÀÔ·Â À̺¥Æ®´Â, ÀÔ·Â string°¡ ¼³Á¤ µÇ·Á°í Çϰí ÀÖÀ» ¶§ ¼ÛÃâ(Dispatch)µË´Ï´Ù. ¿¹¸¦ µé¾î, À¯Àú°¡ IME ¸¦ À¯È¿ÇÏ°Ô µÇ¾î ÀÖ¾î, ±×°ÍÀ» ¾×ƼºêÇÏ°Ô ÇØ ÀϺ»¾î·Î string¸¦ ÀÔ·ÂÇÏ´Â °æ¿ì, À¯Àú°¡ ÀÔ·Â string¸¦ ¼±ÅÃÇÏ´Â °Í°ú µ¿½Ã¿¡ IMEEvent.IME_COMPOSITION À̺¥Æ®°¡ ¼ÛÃâ(Dispatch)µË´Ï´Ù. IMEEvent.IME_COMPOSITION À̺¥Æ®¸¦ ±â´Ù¸®±â À§Çؼ(¶§¹®¿¡)´Â, ´ÙÀ½ÀÇ ¿¹¿Í °°ÀÌ, System class (flash.system.System.ime.addEventListener(...))ÀÇ Á¤Àû properties ime ¿¡ event listener¸¦ Ãß°¡ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
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;
}
»ó±âÀÇ ÄÚµå´Â 2 °³ÀÇ ÅØ½ºÆ® Çʵ带 ÀÛ¼ºÇØ, Ç¥½Ã ¸®½ºÆ®¿¡ Ãß°¡ÇÕ´Ï´Ù. ÃÖÃÊÀÇ ÅØ½ºÆ® Çʵå,inputTxt ´Â, À¯Àú°¡ ÀϺ»¾î ÅØ½ºÆ®¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ´Â ÀÔ·Â ÅØ½ºÆ® ÇʵåÀÔ´Ï´Ù. 2 ¹øÂ°ÀÇ ÅØ½ºÆ® Çʵå,outputTxt ´Â, À¯Àú¿¡ ´ëÇÑ ¿¡·¯ ¸Þ¼¼Áö¸¦ Ç¥½ÃÇÏ´ÂÁö, À¯Àú°¡ inputTxt ÅØ½ºÆ® Çʵ忡 ÀÔ·ÂÇÑ ÀϺ»¾î string¸¦ ¿¡ÄÚÇϱâ À§ÇÑ µ¿Àû ÅØ½ºÆ® ÇʵåÀÔ´Ï´Ù.
