刚接到这个需求的时候,觉得应该不复杂。也见过很多文本编辑器了。网上的太多太多了。
不过紧接着就是问题来了:
面对的问题:
●动态输入文本框 在AS3里怎么输入中文呢?
◎如果在Flash CS里制作,把一个Text文本框拖到舞台的。那我告诉你。你真是太棒了。你不会面对这个问题的。
因为在Flash里从工具里拖出的Text文本会支持中文输入的。
◎纯AS3项目也不会面对这个问题
◎Flex项目动态文本框就会有此问题 As3动态的文本框输入中文 是Adobe的一个Bug
“问题总是在你还没有准备好的时候到来”__屌丝程序员语录
苦逼的程序员总是会莫名的选择那条最摸黑 最难走 最危险的路。
佛曰:天堂有路你不走,地狱无门你自来。
屌丝程序员:我不入地狱谁入地狱?
我就是需要在Flex里加这个工具:不过也有解决的方法:查了n多资料是说把中文字体打包的。
这些都是网上说的啊。不过我问了一个有多年Flash开发的老鸟。他悄悄的告诉我一下内容:
“在TextField的FocusEvent.FOCUS_IN事件侦听中加入:flash.system.IME.enabled=true;”
/*使用 IME 类,您可以在客户端计算机上运行的 Flash 运行时
●获取本地字体名称:Font.enumerateFonts(true);
返回:Array 系统Font 的集合[Font,Font....]
数组元素为Font对象,通过Font对象的fontName来取得名字
●设置字体:不能直接给TextFomat.font="宋体"
需要中英文字体对照转化 中英文字体对照表
tfm.font=fontEnglshiName;
if(_txtInput.selectionBeginIndex<_txtInput.selectionEndIndex)
{
_txtInput.setTextFormat(tfm,_txtInput.selectionBeginIndex,_txtInput.selectionEndIndex);
}
●设置所选的文本的样式:flash.text.TextField.setTextFormat(format:TextFormat, beginIndex:int=-1, endIndex:int=-1):void
tfm.color=fontColorPicker.selectedColor;
●加粗:不像其他的样式,对所选的内容完全应用设置。加粗不同
加粗会做:加粗与取消加粗 的判断
点“加粗” 判断如下:
{
//获取一个txtField的所选文本的样式
var tf:TextFormat=_txtInput.getTextFormat(_txtInput.selectionBeginIndex,_txtInput.selectionEndIndex);
var tfm:TextFormat=new TextFormat();
if(tf.bold==false||tf.bold==null)
{
//加粗
tfm.bold=true;
_txtInput.setTextFormat(tfm,_txtInput.selectionBeginIndex,_txtInput.selectionEndIndex);
}else{
//取消加粗
tfm.bold=false;
_txtInput.setTextFormat(tfm,_txtInput.selectionBeginIndex,_txtInput.selectionEndIndex);
}
●TextFiled的Htmltext可读写的
我们可以通过给Textfield设置htmlText="<Font size="" color=""><B></B></Font>"
给TextField设置内容。同时 ,我们通过设置TextField的.setTextFomat造成了TextField的改变,此时我们读取TextField的htmlText
系统会给我们返回对目前TextField的htmlText描述
●大量的正则表达式应用