IMEを使用している場合でも(ボタンを押したときなど)、プログラムでTextInputに文字を追加できるようにしたいと思います(現在、日本語のIMEを使用しています)。通常、これは非常に簡単です。
protected function button_clickHandler(event:MouseEvent):void
{
ti.text = "k";
}
ここで、ti は TextInput コンポーネントです。ただし、IME を使用する場合は少し注意が必要です。たとえば、上記のコードは、ひらがな IME を使用している場合でも、ti に ak を追加します。IMEのドキュメントを見て、このようなことを試しました
protected function button_clickHandler(event:MouseEvent):void
{
IME.setCompositionString("k");
}
最初はこれがうまくいっていると思っていましたが、ひらがな変換モードが現在選択されている場合でも、または設定した場合でも、常に半角カタカナのように見えるものにデフォルト設定されているようです (100% 確実ではありませんが)。コンポジション文字列を設定する直前。残念ながら、IME ライブラリはオープン ソースではないようですので、これがバグなのかどうかはわかりません。
誰かアドバイスがあればと思っていました-これは非常に具体的であるため、オッズは低いと思いますが、試してみると思いました.
ありがとう!
編集後: これは、私が話していることを試すためのコードです。注: マシンに日本語 IME をセットアップする必要があります。日本語 IME がセットアップされた Windows 7 ボックスでこれを使用し、スタンドアロンの Flash で実行しています。ひらがなとカタカナで ak を入力した場合の違いはわかりにくいですが、よく見ると違いに気付くはずです (また、'a' を入力した直後に別の結果が表示されるはずです)。
<?xml version="1.0"?>
<!-- dpcontrols/adg/SimpleADG.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
protected function button_clickHandler(event:MouseEvent):void
{
ti.setFocus();
try
{
IME.enabled = true;
IME.conversionMode = IMEConversionMode.JAPANESE_HIRAGANA;
IME.setCompositionString("k");
}
catch (error:Error)
{
trace("Unable to set conversion mode.\n" + error.message);
}
}
]]>
</fx:Script>
<s:VGroup>
<s:TextInput id="ti"/>
<s:Button label="go" click="button_clickHandler(event)"/>
</s:VGroup>
</s:Application>