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
希望这次能发布成功