Reconococer caracteres japoneses, chinos, coreanos y demás con Flash /Flex

Muchas veces es necesario saber como va a incorporar texto el usuario en nuestra película .swf.

Por ejemplo muchas lenguas asiáticas pueden tener miles de caracteres, que para escribirlos necesitan una aplicación específica en su sistema, denominada IME (Input MEthod Editor).

Para detectar si un usuario tiene un IME, comprueba  el valor boolean de la clase flash.system.Capabilities.hasIME, que devuelve true o false, así sabremos si tiene un IME instalado.

Ahora debemos averiguar si lo tiene conectado, lo obtendremos con la propiedad enabled de flash.system.IME.enabled.

Determinar que tipo de conversión de caracteres realiza en una aplicación multilingüe:

if (flash.system.Capabilities.hasIME)
{
    switch (flash.system.IME.conversionMode)
    {
        case flash.system.IMEConversionMode.ALPHANUMERIC_FULL:
Alert.show("Conversion alfanumerica FULL width");
            break;
        case flash.system.IMEConversionMode.ALPHANUMERIC_HALF:
Alert.show("Conversion alfanumerica Half width")
            break;
        case flash.system.IMEConversionMode.CHINESE:
Alert.show("Conversion a chino")
            break;
        case flash.system.IMEConversionMode.JAPANESE_HIRAGANA:
Alert.show("Conversion japonés Hiragana");
            break;
        case flash.system.IMEConversionMode.JAPANESE_KATAKANA_FULL:
Alert.show("Conversion Japonés KAtana FUll width")
            break;
        case flash.system.IMEConversionMode.JAPANESE_KATAKANA_HALF:
Alert.show("JApones katana halfo width")
            break;
        case flash.system.IMEConversionMode.KOREAN:
Alert.show("koreano");
            break;
        default:
          Alert.show("Current conversion mode is " + flash.system.IME.conversionMode+"");
            break;
    }
}
else
{
  Alert.show("Por favor instala y conecta un IME")
}

Ahora veremos como activar IME para campos de texto y desactivándolos para otros.

Primero intentaremos definir un método IME para un usuario, esta acción siempre tiene que hacerse dentro de un try catch , por posibles crasheo( puede que la aplicación no pueda realizar esta acción).

if(flash.system.Capabilities.hasIME){

try {

flash.system.IME.enabled=true;

flash.system.IME.conversionMode=IMEConversionMode.CHINESE

} catch(error:Error)

{

Alert.show(«»+error+»»);

}

// Desactivamos el IME para un TextInput

<mx:TextInput id=»TXime» x=»0″ y=»0″/>

TXime.addEventListener(FocusEvent.FOCUS_IN,focusInHandler);

TXime.addEventListener(FocusEvent.FOCUS_OUT,focusOutHandler);
function focusInHandler(event:FocusEvent):void
{
if (flash.system.Capabilities.hasIME)
{
flash.system.IME.enabled = false;
}
}
function focusOutHandler(event:FocusEvent):void
{
if (flash.system.Capabilities.hasIME)
{
flash.system.IME.enabled = true;
}
}

Este tutorial pertenece al capítulo http://www.vertutoriales.com/index.php/tag/entorno-tiempo-de-ejecucion-flex-flash/, vea más tutoriales de Entorno en tiempo de ejecución Flex/Flash.

 

Carlos Dk

Apasionado por la enseñanza y el SEO

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.