【问题标题】:Programmatically add character to TextInput when Hiragana IME is active当平假名 IME 处于活动状态时,以编程方式将字符添加到 TextInput
【发布时间】:2011-07-17 17:58:55
【问题描述】:

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

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

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

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

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

想知道是否有人有任何建议 - 我意识到这是非常具体的,所以几率很低,但我想我会尝试。

谢谢!


后期编辑:这里有一些代码可以尝试我在说什么。注意:您需要在您的机器上设置日语 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>

【问题讨论】:

    标签: apache-flex localization flex4 ime


    【解决方案1】:

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

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

    【讨论】:

    • J_A_X,感谢您的回复。 IME 已启用,并且在我轮询它时已正确设置了转换模式,但 setCompositionString 仍默认为不同的转换模式。是的,所有字体都可用 - 我可以在 TextInput 中同时输入平假名和片假名。将在我的原始帖子中添加一些代码,以防有人想尝试复制。
    • 当然。代码在原帖里,SWF在这里dl.dropbox.com/u/8639981/bugTest.swf
    • 测试程序:打开IME,设置转换模式为平假名,在textInput中输入'k';删除“k”,按下按钮,出现一个“k”,但与前一个不同。
    • 好吧,我自己试过了,也不能让它工作。我不是日语内化方面的专家,但似乎 Adob​​e IME 和 Windows IME 之间存在差异。当你打字的时候,Windows IME 就会启动,如果你使用转换器,那就是 Adob​​e 的。您应该检查 bugs.adobe.com/flex/,如果没有,请发布问题。
    • 太棒了 - 刚刚发布了一个错误。感谢您的帮助!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-19
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多