1

即使在使用 IME(我现在使用的是日语 IME)时,我也希望能够以编程方式(比如按下按钮时)向 TextInput 添加一个字符。通常这会非常容易,即

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>
4

2 回答 2

2

首先,看这个链接: http://livedocs.adobe.com/flex/3/html/help.html?content= 18_Client_System_Environment_6.html

确保您已启用 IME 和正确的设置。其次,您使用的是什么版本的 flex?您是否有加载到可以处理该语言的应用程序的字体?

于 2011-03-17T22:10:52.913 回答
0

提交了一个错误 - 我们将看看 Adob​​e 是怎么说的。

于 2011-03-30T20:17:21.313 回答