richtextfield xml转换为文本方法

因为输入框有可能有只需要显示单行,并且又同时需要在输入框显示表情的变态需求。 所以当我尝试把文本设置成单行显示并且不允许换行时,发现表情不会随着超出的文字横向位移,暂时我解决的办法是在SpriteRenderer 修改此方法为:
private function doRender():void{
_spriteContainer.y = -textRenderer.scrollHeight;
renderVisibleSprites();
}
问题暂时得以解决。

另外,如果用现在的组件实现多人聊天功能的话,那么传输过程中必须为xml格式,如果此消息需要发送给一个普通的文本框显示,那么直接显示的是xml文档,不是非常直观。而且,有些地方输入框并不需要将表情显示出来,只需要在输出窗口 将表情显示出来,所以,我加了几个方法,能让组件导出和解析纯文本格式,如:

测试字符[符号1]1]2[[3[符号2]4]5[[[符号3]]]6]]7][符号4]]8]]90

其中[符号1][符号2] 此类符号表示一个表情。 我将我加的方法写出来,期待官方版本

在RichTextField.as 中添加方法
public function AppendText(value:String=”"):void {

var TextString:String=”"
var lastindex:int = -1
var spritesArray:Array = new Array()
var obj:Object
for (var i:int = 0; i 1) arr.sortOn(“index”, Array.NUMERIC);

for (var i:int = arr.length-1; i >=0; i–)
{
var node:String = “-[" + arr[i].src + “]-”;
//两边的- – 短横线不知道为什么,不加上的 话[ ] 两符号没有了。
var index:int=parseInt(arr[i].index)
var xml:String = “”
var txtfmt:TextFormat = textfield.getTextFormat(index, index+1)

xml += ” ”
xml += node

xml+=”"
xml += “”

textfield.insertXMLText(index,index,xml)
}

if (_rtf.html)
{
return textfield.htmlText.split(_rtf._placeholder).join(“”);
}else
{
return textfield.text.split(_rtf._placeholder).join(“”);
}

delete textfield
textfield=null

}

并且在RichTextField中添加方法:
public function exportText():String
{
return _spriteRenderer.exportText()
}

通过 input1.AppendText(input2.exportText()) 可以将input2的内容以纯文本的方式传递给input1

希望这次能发布成功

posted @ 2013-01-29 11:18  tinytiny  阅读(693)  评论(0编辑  收藏  举报