日本人总是有各式各样的要求,光切换转入法不行,还必须能自动进行全半角转换。真没办法。
下面做了一个输入框,当焦点离开时,就会自动进行转换。
<?xml version="1.0" encoding="utf-8"?>
<mx:TextInput xmlns:mx="http://www.adobe.com/2006/mxml" focusOut="transformFont()">
<mx:Script>
<![CDATA[
[Bindable]
public var isTransformFull:Boolean = false;
[Bindable]
public var isTransformHalf:Boolean = false;
private var FullKana1:String = "ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン";
private var HalfKana1:String = "ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン";
private var FullKana2:String = "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ";
private var HalfKana2:String = "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ";
private var FullAlphabet:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private var HalfAlphabet:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private var FullNumber:String = "0123456789";
private var HalfNumber:String = "0123456789";
private var FullSymbol:String = "()-./@/¥";
private var HalfSymbol:String = "()-./@//";
private function transformFont():void {
if(isTransformFull)encodeString();
else if(isTransformHalf)decodeString();
else return;
}
private function encodeString():void {
var strResult:String = "";
strResult = this.text;
strResult = encodeString1(strResult);
strResult = encodeString2(strResult);
strResult = encodeString3(strResult);
strResult = encodeString4(strResult);
strResult = encodeString5(strResult);
this.text = strResult;
}
private function decodeString():void {
var strResult:String;
strResult = this.text;
strResult = decodeString1(strResult);
strResult = decodeString2(strResult);
strResult = decodeString3(strResult);
strResult = decodeString4(strResult);
strResult = decodeString5(strResult);
this.text = strResult;
}
private function translateString(OriginalString:String, strSource:String, strDestination:String):String {
var strResult:String;
strResult = OriginalString;
for (var i:int = 0; i < strSource.length; i++) {
while (strResult != null && strResult.indexOf(strSource.substring(i,i+1)) != -1){
strResult = strResult.replace(strSource.substring(i,i+1),strDestination.substring(i,i+1));
}
}
return strResult;
}
private function encodeString1(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfKana1, FullKana1);
return strResult;
}
private function encodeString2(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfKana2, FullKana2);
return strResult;
}
private function encodeString3(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfAlphabet, FullAlphabet);
return strResult;
}
private function encodeString4(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfNumber, FullNumber);
return strResult;
}
private function encodeString5(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfSymbol, FullSymbol);
return strResult;
}
private function decodeString1(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullKana1, HalfKana1);
return strResult;
}
private function decodeString2(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullKana2, HalfKana2);
return strResult;
}
private function decodeString3(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullAlphabet, HalfAlphabet);
return strResult;
}
private function decodeString4(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullNumber, HalfNumber);
return strResult;
}
private function decodeString5(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullSymbol, HalfSymbol);
return strResult;
}
]]>
</mx:Script>
</mx:TextInput>
下面做了一个输入框,当焦点离开时,就会自动进行转换。
<?xml version="1.0" encoding="utf-8"?>
<mx:TextInput xmlns:mx="http://www.adobe.com/2006/mxml" focusOut="transformFont()">
<mx:Script>
<![CDATA[
[Bindable]
public var isTransformFull:Boolean = false;
[Bindable]
public var isTransformHalf:Boolean = false;
private var FullKana1:String = "ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン";
private var HalfKana1:String = "ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン";
private var FullKana2:String = "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ";
private var HalfKana2:String = "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ";
private var FullAlphabet:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private var HalfAlphabet:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private var FullNumber:String = "0123456789";
private var HalfNumber:String = "0123456789";
private var FullSymbol:String = "()-./@/¥";
private var HalfSymbol:String = "()-./@//";
private function transformFont():void {
if(isTransformFull)encodeString();
else if(isTransformHalf)decodeString();
else return;
}
private function encodeString():void {
var strResult:String = "";
strResult = this.text;
strResult = encodeString1(strResult);
strResult = encodeString2(strResult);
strResult = encodeString3(strResult);
strResult = encodeString4(strResult);
strResult = encodeString5(strResult);
this.text = strResult;
}
private function decodeString():void {
var strResult:String;
strResult = this.text;
strResult = decodeString1(strResult);
strResult = decodeString2(strResult);
strResult = decodeString3(strResult);
strResult = decodeString4(strResult);
strResult = decodeString5(strResult);
this.text = strResult;
}
private function translateString(OriginalString:String, strSource:String, strDestination:String):String {
var strResult:String;
strResult = OriginalString;
for (var i:int = 0; i < strSource.length; i++) {
while (strResult != null && strResult.indexOf(strSource.substring(i,i+1)) != -1){
strResult = strResult.replace(strSource.substring(i,i+1),strDestination.substring(i,i+1));
}
}
return strResult;
}
private function encodeString1(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfKana1, FullKana1);
return strResult;
}
private function encodeString2(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfKana2, FullKana2);
return strResult;
}
private function encodeString3(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfAlphabet, FullAlphabet);
return strResult;
}
private function encodeString4(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfNumber, FullNumber);
return strResult;
}
private function encodeString5(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, HalfSymbol, FullSymbol);
return strResult;
}
private function decodeString1(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullKana1, HalfKana1);
return strResult;
}
private function decodeString2(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullKana2, HalfKana2);
return strResult;
}
private function decodeString3(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullAlphabet, HalfAlphabet);
return strResult;
}
private function decodeString4(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullNumber, HalfNumber);
return strResult;
}
private function decodeString5(OriginalString:String):String {
var strResult:String;
strResult = OriginalString;
strResult = translateString(strResult, FullSymbol, HalfSymbol);
return strResult;
}
]]>
</mx:Script>
</mx:TextInput>