Verwenden der IME-Klasse

Mit der IME-Klasse können Sie den Eingabemethoden-Editor (IME) des Betriebssystems über Flash Player steuern.

Mit ActionScript können Sie ermitteln,

Sie können ein Eingabetextfeld mit einem bestimmten IME-Kontext verknüpfen. Wenn Sie zwischen Eingabefeldern wechseln, können Sie auch den IME beispielsweise zwischen Hiragana (Japanisch), Ziffern mit voller Breite, Ziffern mit halber Breite, direkter Eingabe usw. umschalten.

Benutzer können mithilfe eines Eingabemethoden-Editors ASCII-fremde Textzeichen aus Multibyte-Sprachen wie Chinesisch, Japanisch oder Koreanisch eingeben.

Weitere Informationen zur Verwendung von Eingabemethoden-Editoren finden Sie in der Dokumentation des Betriebssystems, für das Sie die Anwendung entwickeln. Weitere Ressourcen finden Sie auf den folgenden Websites:

HINWEIS

 

Wenn auf dem Computer des Benutzers kein IME aktiviert ist, treten mit Ausnahme von Capabilities.hasIME beim Aufrufen von IME-Methoden oder IME-Eigenschaften Fehler auf. Nach dem Aktivieren eines IME werden ActionScript-Aufrufe von IME-Methoden und IME-Eigenschaften wie erwartet durchgeführt. Wenn Sie beispielsweise einen IME für Japanisch verwenden, muss dieser aktiviert werden, bevor IME-Methoden oder IME-Eigenschaften aufgerufen werden können.

Unterthemen

Überprüfen, ob ein IME installiert und aktiviert ist
Ermitteln des derzeit aktivierten IME-Konvertierungsmodus
Festlegen des IME-Konvertierungsmodus
Deaktivieren des IME für bestimmte Textfelder
Überwachen von IME-Kompositionsereignissen

Überprüfen, ob ein IME installiert und aktiviert ist

Vor dem Aufrufen von IME-Methoden oder IME-Eigenschaften sollten Sie immer überprüfen, ob auf dem Computer des Benutzers ein IME installiert und aktiviert ist. Im folgenden Codebeispiel wird veranschaulicht, wie Sie vor dem Aufrufen von Methoden überprüfen können, ob ein IME installiert und aktiviert ist:

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.");
}

Mit diesem Code wird zunächst mithilfe der Capabilities.hasIME-Eigenschaft überprüft, ob ein IME installiert ist. Wenn diese Eigenschaft auf true gesetzt ist, wird dann mit der IME.enabled-Eigenschaft überprüft, ob der IME aktiviert ist.

Ermitteln des derzeit aktivierten IME-Konvertierungsmodus

Beim Erstellen mehrsprachiger Anwendungen müssen Sie möglicherweise ermitteln, welcher Konvertierungsmodus aktiviert ist. Mit dem folgenden Codebeispiel wird veranschaulicht, wie Sie überprüfen können, ob ein IME installiert ist, und wenn ja, welcher IME-Konvertierungsmodus aktiviert ist:

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 Japanese 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.";
}

Mit diesem Code wird zunächst überprüft, ob ein IME installiert ist. Anschließend wird überprüft, welcher Konvertierungsmodus im aktuellen IME verwendet wird. Dazu wird die IME.conversionMode-Eigenschaft mit den einzelnen Konstanten der IMEConversionMode-Klasse verglichen.

Festlegen des IME-Konvertierungsmodus

Wenn Sie den Konvertierungsmodus des IME des Benutzers ändern möchten, müssen Sie sicherstellen, dass der Code in einen try..catch-Codeblock eingeschlossen ist, da beim Festlegen des Konvertierungsmodus mit der conversionMode-Eigenschaft möglicherweise ein Fehler ausgegeben wird, wenn der Konvertierungsmodus mit dem IME nicht gesetzt werden kann. Im folgenden Codebeispiel wird veranschaulicht, wie beim Festlegen der IME.conversionMode-Eigenschaft ein try..catch-Codeblock verwendet wird:

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;
    }
}

Mit diesem Code wird zunächst ein Textfeld erstellt, in dem eine Statusmeldung angezeigt werden kann. Wenn der IME installiert ist, wird dieser dann aktiviert und der Konvertierungsmodus auf Koreanisch gesetzt. Wenn auf dem Computer des Benutzers kein koreanischer IME installiert ist, wird in Flash Player ein Fehler ausgelöst und vom try..catch-Codeblock abgefangen. Der try..catch-Codeblock zeigt die Fehlermeldung in dem zuvor erstellten Textfeld an.

Deaktivieren des IME für bestimmte Textfelder

In einigen Fällen können Sie bei Bedarf den IME eines Benutzers deaktivieren, während der Benutzer Zeichen eingibt. Bei einem Textfeld, in dem nur numerische Zeichen eingegeben werden können, kann der IME beispielsweise deaktiviert werden, sodass die Dateneingabe nicht verlangsamt wird.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie die Ereignisse FocusEvent.FOCUS_IN und FocusEvent.FOCUS_OUT überwachen und den IME des Benutzers entsprechend deaktivieren können:

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;
    }
}

In diesem Beispiel werden die beiden Eingabetextfelder phoneTxt und nameTxt erstellt. Dann werden zwei Ereignis-Listener zum Textfeld phoneTxt hinzugefügt. Wenn der Benutzer den Fokus auf das Textfeld phoneTxt setzt, wird ein FocusEvent.FOCUS_IN-Ereignis ausgelöst und der IME deaktiviert. Wenn das Textfeld phoneTxt nicht mehr den Fokus hat, wird das FocusEvent.FOCUS_OUT-Ereignis ausgelöst und der IME wieder aktiviert.

Überwachen von IME-Kompositionsereignissen

IME-Kompositionsereignisse werden ausgelöst, wenn ein Kompositionsstring festgelegt wird. Wenn der IME des Benutzers installiert und aktiviert ist und der Benutzer beispielsweise einen String auf Japanisch eingibt, wird das IMEEvent.IME_COMPOSITION-Ereignis ausgelöst, sobald der Benutzer den Kompositionsstring auswählt. Um das IMEEvent.IME_COMPOSITION-Ereignis überwachen zu können, müssen Sie einen Ereignis-Listener zur statischen ime-Eigenschaft der System-Klasse hinzufügen (flash.system.System.ime.addEventListener(...)), wie im folgenden Beispiel dargestellt:

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;
}

Mit diesem Code werden zwei Textfelder erstellt und dann zur Anzeigeliste hinzugefügt. Das erste Textfeld inputTxt ist ein Eingabetextfeld, in dem der Benutzer japanischen Text eingeben kann. Das zweite Textfeld outputTxt ist ein dynamisches Textfeld, in dem Fehlermeldungen angezeigt werden oder in dem der japanische String wiederholt wird, den der Benutzer im Textfeld inputTxt eingibt.


Flash CS3

 

Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht

Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000328.html