当Hiragana IME处于活动状态时,以编程方式将字符添加到TextInput

时间:2011-03-17 21:13:22

标签: flex localization flex4 ime

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

protected function button_clickHandler(event:MouseEvent):void
{
      ti.text = "k";
}

其中ti是TextInput组件。但是,使用IME时,事情变得有点棘手。例如,即使您使用的是平假名IME,上面的代码也会增加一个k。 我查看了IME文档并尝试了类似这样的内容

protected function button_clickHandler(event:MouseEvent):void
{
      IME.setCompositionString("k");
}

起初我认为这是在做伎俩,但似乎总是默认为看起来像半宽片假名(虽然我不是100%肯定),即使目前选择了平假名转换模式,或者如果我在设置组合字符串之前设置了它。不幸的是,IME库似乎不是开源的,所以我不知道这是不是一个bug。

想知道是否有人有任何建议 - 我知道这是超级具体的,所以赔率很低,但我想我会尝试。

谢谢你!


后期编辑:这里有一些代码可以尝试我正在谈论的内容。注意:您需要在机器上安装日语IME。我在带有日语IME设置的Windows 7机箱上使用它,并在独立Flash上​​运行它。很难看出在平假名和片假名中输入k之间的区别,但是如果你仔细观察,你应该注意到一个区别(如果你在看到不同的结果后突然输入'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>

2 个答案:

答案 0 :(得分:2)

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

确保已启用IME并进行正确设置。第二,你使用的是什么版本的flex?您是否有一个加载到应用程序中的字体可以处理该语言?

答案 1 :(得分:0)

提交了一个错误 - 我们会看到Adobe所说的内容。