我希望能够以编程方式(即按下按钮时)向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>
答案 0 :(得分:2)
首先,请看这个链接:http://livedocs.adobe.com/flex/3/html/help.html?content=18_Client_System_Environment_6.html
确保已启用IME并进行正确设置。第二,你使用的是什么版本的flex?您是否有一个加载到应用程序中的字体可以处理该语言?
答案 1 :(得分:0)
提交了一个错误 - 我们会看到Adobe所说的内容。