=波波日志 > flash/flex/fcs/AIR > 26.5.支持IME设备=
[转]26.5.支持IME设备
26.5.1. 问题
我想分发使用日文,中文或韩文等多字节字符的应用程序
26.5.2. 解决办法
使用Capabilities类检测输入法编辑器,使用IME类控制如何与Flex应用程序交互。
26.5.3. 讨论
东方的语言如汉字就是以象形字组成而不是用拉丁字符组成。拉到语言的字符是有限的,可被轻松的映射到键盘上。但这方法对于东方语言就不可能,因为这需要成千上万个键盘按键。
输入法编辑器(IMEs)是软件工具,允许字符由多个按键组合而成。IME是运行在操作系统级别,在Flash Player外部。
Capabilities类有个属性叫hasIME,你可以使用它检测用户系统是否安装有IME。使用flash.system.IME对象检测是否已启动IME以及设置了什么转换模式。下面的例子测试IME,如果找到,启动IME并设置转换模式:
当尝试创作IME设置时必须使用try...catch代码块,因为如果IME不支持指定设置就会发生错误。
有时候你可能希望禁用IME,比如某个文本框只输入数字。这时你可以在组件获得焦点时触发一个函数禁用IME,当组件失去焦点时重新启动IME:
如果你想知道用户是否组合一个字符,你可以监听System.ime对象事件:
我想分发使用日文,中文或韩文等多字节字符的应用程序
26.5.2. 解决办法
使用Capabilities类检测输入法编辑器,使用IME类控制如何与Flex应用程序交互。
26.5.3. 讨论
东方的语言如汉字就是以象形字组成而不是用拉丁字符组成。拉到语言的字符是有限的,可被轻松的映射到键盘上。但这方法对于东方语言就不可能,因为这需要成千上万个键盘按键。
输入法编辑器(IMEs)是软件工具,允许字符由多个按键组合而成。IME是运行在操作系统级别,在Flash Player外部。
Capabilities类有个属性叫hasIME,你可以使用它检测用户系统是否安装有IME。使用flash.system.IME对象检测是否已启动IME以及设置了什么转换模式。下面的例子测试IME,如果找到,启动IME并设置转换模式:
+展开
-ActionScript
private function detectIME():void
{
if (Capabilities.hasIME == true)
{
output.text = "Your system has an IME installed.\n";
if (flash.system.IME.enabled == true)
{
output.text += "Your IME is enabled. and set to " + flash.system.IME.conversionMode;
}
else
{
output.text += "Your IME is disabled\n";
try
{
flash.system.IME.enabled = true;
flash.system.IME.conversionMode = IMEConversionMode.JAPANESE_HIRAGANA;
output.text += "Your IME has been enabled successfully";
}
catch (e:Error)
{
output.text +="Your IME could not be enabled.\n"
}
}
}
else output.text = "You do not have an IME installed.\n";
}
{
if (Capabilities.hasIME == true)
{
output.text = "Your system has an IME installed.\n";
if (flash.system.IME.enabled == true)
{
output.text += "Your IME is enabled. and set to " + flash.system.IME.conversionMode;
}
else
{
output.text += "Your IME is disabled\n";
try
{
flash.system.IME.enabled = true;
flash.system.IME.conversionMode = IMEConversionMode.JAPANESE_HIRAGANA;
output.text += "Your IME has been enabled successfully";
}
catch (e:Error)
{
output.text +="Your IME could not be enabled.\n"
}
}
}
else output.text = "You do not have an IME installed.\n";
}
当尝试创作IME设置时必须使用try...catch代码块,因为如果IME不支持指定设置就会发生错误。
有时候你可能希望禁用IME,比如某个文本框只输入数字。这时你可以在组件获得焦点时触发一个函数禁用IME,当组件失去焦点时重新启动IME:
+展开
-XML
<mx:Script>
<[CDATA[
private function enableIME(enable:Boolean):void
{
if (Capabilities.hasIME)
{
try
{
flash.system.IME.enabled = enable;
trace("IME " + (enable ? "enable" : "disable"));
}
catch (e:Error)
{
Alert.show("Could not " (enable ? "enable" : "disable") + " IME");
}
}
}
]]>
</mx:Script>
<mx:VBox horizontalCenter="0" verticalCenter="0" >
<mx:TextInput id="numericInput" focusIn="enableIME(false)"
focusOut="enableIME(true)" />
<mx:TextInput id="textInput" />
</mx:VBox>
<[CDATA[
private function enableIME(enable:Boolean):void
{
if (Capabilities.hasIME)
{
try
{
flash.system.IME.enabled = enable;
trace("IME " + (enable ? "enable" : "disable"));
}
catch (e:Error)
{
Alert.show("Could not " (enable ? "enable" : "disable") + " IME");
}
}
}
]]>
</mx:Script>
<mx:VBox horizontalCenter="0" verticalCenter="0" >
<mx:TextInput id="numericInput" focusIn="enableIME(false)"
focusOut="enableIME(true)" />
<mx:TextInput id="textInput" />
</mx:VBox>
如果你想知道用户是否组合一个字符,你可以监听System.ime对象事件:
+展开
-ActionScript
System.ime.addEventListener(IMEEvent.IME_COMPOSITION, onComposition);
类别:flash/flex/fcs/AIR 作者:转载 日期:2010-04-30 【评论:0】
暂时没有评论!
发表留言
百度赞助
同类热门博文
- ·As+lightbox+js实现..
- ·21.8.使用Cairngorm..
- ·13.1.为ArrayCollec..
- ·18.13.通过二进制So..
- ·22.7.使用ModuleLoa..
- ·JavaScript控制Flas..
- ·6.6.动态载入外部图..
- ·flash预加载进度条p..
博格Tag
- flash/flex/fcs/AIR(752)
- Asp.Net/C#/WCF(598)
- 操作系统及应用软件(376)
- JavaScript/Ajax(330)
- SQL及数据库(134)
- 黑客技术(115)
- Asp/VBScript(111)
- HTML/WML/CSS兼容/XML(102)
- PHP/apache/Perl(96)
- 网站排名及优化(96)
- 其他(75)
- showbo日志(66)
- lucene.net/分词技术(33)
- 计算机网络(26)
- 机械重工(26)
- C#设计模式(25)
- Google Maps开发(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(11)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
最新博文
- ·PHP socket套接字学..
- ·Warning Cannot sen..
- ·php与flash as3 soc..
- ·Flash XMLSocket使用..
- ·给flash右键增加自定..
- ·flash控件html及col..
- ·Flash加载XML文件CD..
- ·Flex3中文教程--hom..
随机博文
