flash textfield line .....求助

时间:2011-08-19 15:31:32

标签: flash actionscript-3 actionscript

package {
    import flash.display.Sprite;
    import flash.text.TextField;

    public class test extends Sprite
    {
        private var _textFiled:TextField;
        public function test()
        {
            _textFiled = new TextField();
            _textFiled.text = ".  2011年8月15日晚,据传<a href='http://www.google.com.hk'>Google</a> 将以 <font size = '12'>40 </font> 美元现金每股,总价 125 亿美元,收购摩托罗拉移动";
            _textFiled.width = 300;
            _textFiled.wordWrap = true;
            _textFiled.multiline = true;
            var st:String = "";
            for (var i:int = 0; i < _textFiled.numLines; i++) {
                var s:String = _textFiled.getLineText(i) + "\n    ";
                st += s;
            }
            _textFiled = new TextField();
            _textFiled.width = 300;
            _textFiled.wordWrap = true;
            _textFiled.multiline = true;
            _textFiled.htmlText = st;

            addChild(_textFiled);
        }
    }
}
现在我有这样的要求,我想用textfiled现实一个文本,文本中包含HTML代码,我觉得符合TAB之后,我知道textfiled中的一个getlineText方法,然后再回来添加一个“\ t”

var strText:string = "";
for(var i:int =9;i<textfile.numLine;i++) {

  var str:String = textfiled.getlineText(i) + "\t";
  strText += str;
}
textfile.htmlText = strText ;
但是这只能得到文字,HTML代码过滤,我来自中国,第一次在这里提问,谢谢大家。

2 个答案:

答案 0 :(得分:0)

标签不会以html显示。如果有多个空格,请根据需要插入尽可能多的&nbsp;。如果在行的中间需要制表符,则需要计算实际需要的空格数。在这种情况下,使用flash时,创建多个TextField可能会更容易,每列一个。

答案 1 :(得分:0)

我不确定这是否是您要求的,但如果您不想丢失HTML格式,则需要使用_textFiled.htmlText获取文本。然后,如果你想逐行阅读它,那是非常棘手的,因为<p><br>都会创建新行。根据您的输入,您可以只按<br>标签分割字符串:

var lines:Array = _textFiled.htmlText.split("<br>");
for(var i:int =9;i<lines.length;i++) {

  var str:String = lines[i] + "\t";
  strText += str;
}

但同样,它取决于输入 - 如果它是用户生成的,那么你需要做更多的解析。如果没有,并且您知道如何格式化HTML,则更容易。