Documentazione di Flash CS3 |
|||
| Programmazione in ActionScript 3.0 > Ambiente del sistema client > Uso della classe IME | |||
La classe IME consente di manipolare l'IME (Input Method Editor) del sistema operativo all'interno di Flash Player.
Utilizzando ActionScript è possibile determinare quanto segue:
Capabilities.hasIME)IME.enabled)IME.conversionMode)È possibile associare un campo di testo di input con un contesto IME particolare. Quando si passa da un campo di input a un altro, è anche possibile passare a una modalità dell'IME diversa, ad esempio Hiragana (giapponese), numeri a larghezza intera, numeri a larghezza ridotta, input diretto e così via.
Un IME consente all'utente di digitare caratteri di testo non ASCII nelle lingue multibyte quali il cinese, il giapponese e il coreano.
Per ulteriori informazioni sull'uso degli IME, consultare la documentazione del sistema operativo per il quale si sta sviluppando l'applicazione. Per ulteriori risorse, vedere i siti Web seguenti:
|
NOTA |
|
Se sul computer dell'utente non è stato attivato alcun IME, le chiamate ai metodi o alle proprietà IME diversi da |
Prima di chiamare qualsiasi metodo o proprietà IME, è necessario verificare sempre se sul computer dell'utente è installato e attivato un IME. Il codice riportato di seguito illustra come verificare se l'utente ha installato e attivato un IME prima di chiamare qualsiasi metodo:
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.");
}
Il codice precedente controlla innanzi tutto se sul computer dell'utente è installato un IME utilizzando la proprietà Capabilities.hasIME. Se questa proprietà è impostata su true, il codice controlla quindi se l'IME dell'utente è attualmente attivato utilizzando la proprietà IME.enabled.
Quando si creano applicazioni in più lingue, può essere necessario determinare quale modalità di conversione è attualmente attivata per l'utente. Il codice riportato di seguito dimostra come verificare se l'utente ha attivato un IME e, in tal caso, quale modalità di conversione è attiva:
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.";
}
Il codice precedente verifica come prima cosa se l'utente ha installato un IME. Quindi, controlla quale modalità di conversione viene utilizzata dall'IME corrente, confrontando la proprietà IME.conversionMode con ognuna delle costanti della classe IMEConversionMode.
Quando si cambia la modalità di conversione IME dell'utente, è necessario verificare che il codice sia racchiuso in un blocco try..catch, perché se si imposta una modalità di conversione utilizzando la proprietà conversionMode, è possibile che venga generato un errore se l'IME non è in grado di impostare tale modalità di conversione. Il codice riportato di seguito dimostra come utilizzare il blocco try..catch quando si imposta la proprietà IME.conversionMode:
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;
}
}
Il codice precedente crea innanzitutto un campo di testo, che viene utilizzato per visualizzare un messaggio di stato per l'utente. Quindi, se l'IME è installato, il codice attiva l'IME e imposta la modalità di conversione sulla lingua coreana. Se nel computer dell'utente non è installato l'IME per il coreano, viene generato un errore che viene rilevato dal blocco try..catch. Il blocco try..catch visualizza il messaggio di errore nel campo di testo creato in precedenza.
In alcuni casi, può essere utile disattivare l'IME dell'utente mentre è in corso la digitazione dei caratteri. Ad esempio, se è stato creato un campo di testo che accetta solo input numerico, può non essere consigliabile attivare l'IME e rallentare l'immissione dei dati.
L'esempio riportato di seguito dimostra come impostare l'intercettazione degli eventi FocusEvent.FOCUS_IN e FocusEvent.FOCUS_OUT e disattivare di conseguenza l'IME dell'utente:
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;
}
}
Questo esempio crea due campi di testo, phoneTxt e nameTxt, quindi aggiunge due listener di eventi al campo di testo phoneTxt. Quando l'utente imposta l'attivazione sul campo di testo phoneTxt, viene inviato un evento FocusEvent.FOCUS_IN e l'IME viene disattivato. Quando il campo di testo phoneTxt non è più attivo, viene inviato l'evento FocusEvent.FOCUS_OUT per riattivare l'IME.
Gli eventi di composizione IME vengono inviati quando si imposta una stringa di composizione. Ad esempio, se l'IME dell'utente è attivato e in uso e viene digitata una stringa in giapponese, l'evento IMEEvent.IME_COMPOSITION verrà inviato non appena l'utente seleziona la stringa di composizione. Per impostare l'intercettazione dell'evento IMEEvent.IME_COMPOSITION, è necessario aggiungere un listener di eventi alla proprietà statica ime nella classe System (flash.system.System.ime.addEventListener(...)), come illustrato nell'esempio riportato di seguito:
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;
}
Il codice precedente crea due campi di testo e li aggiunge all'elenco di visualizzazione. Il primo, inputTxt, è un campo di testo di input che consente all'utente di immettere testo in giapponese. Il secondo, outputTxt, è un campo di testo dinamico che visualizza i messaggi di errore per l'utente o che riflette la stringa in giapponese digitata dall'utente nel campo di testo inputTxt.
Flash CS3
Inviami un messaggio e-mail quando vengono aggiunti dei commenti a questa | Rapporto sui commenti
Pagina corrente: http://livedocs.adobe.com/flash/9.0_it/main/00000328.html