flash 的textfiled换行问题。

ruolins 2011-08-18 09:50:40
我要做的是有一段文字用flash的textfiled显示,我知道这个有自动换行的,但是我有一个需求是需要在除了第一行以外所有的行前面加上制表符"\t",这通常要计算宽度,不知道怎么做,请知道的给我哥实例,或者给我思路。谢谢了。
...全文
214 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
finalangelx 2012-03-21
  • 打赏
  • 举报
回复
问题就是 长度只有70的时候,数字和中文混合.数字会强制换行.而且高度无法保证.
finalangelx 2012-03-21
  • 打赏
  • 举报
回复
哇靠,纯英文的怕毛啊.关键是中英文混合.这有屁难度,我现场能写一个解决的.

class CRTextField extends TextField
{
//private const TEXT_SIZE:uint = 14;
//private const TEXT_COLOR:TextColorType
private const TEXT_WIDTH:uint = 180;

private var _txFormat:TextFormat = null;

public function CRTextField()
{
this.wordWrap = true;
this.multiline = true;
this.width = TEXT_WIDTH;
}

public function setText(str:String):void
{
this.text = " " + str;//自动增加行头
this.height = TEXT_SIZE * this.numLines + 0.5 * (this.numLines - 1);//(字符高度是15,但是 行间距是存在的.所以必须加上才是可以显示的大小)
}
}
finalangelx 2012-03-21
  • 打赏
  • 举报
回复
代码显示不全啊.
狄默默斯基 2011-08-22
  • 打赏
  • 举报
回复
我来晚了。。。。
ruolins 2011-08-21
  • 打赏
  • 举报
回复

mport caurina.transitions.*;


var s:String = "lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec magna velit, vehicula vel, fringilla et, pretium et, elit. Ut at dolor quis dui pharetra vestibulum. Curabitur aliquam placerat augue. Donec vel tortor a nunc fermentum sodales. Curabitur ut nunc vel diam euismod blandit. Nullam vel mi at metus tincidunt tempor. Donec mi. Vivamus facilisis. Quisque odio. Sed erat ipsum, porttitor in, viverra eu, porttitor nec, dolor. Sed augue. In est nisl, adipiscing id, imperdiet et, elementum sit amet, tellus. Suspendisse eu felis a lacus dapibus ultrices. Duis fermentum diam id purus. Donec suscipit orci eu ipsum varius lacinia. Aliquam vestibulum, ligula vitae malesuada volutpat, lectus sapien fermentum ligula, et euismod magna libero sit amet ligula.#www.google.com#google";

var textBox:TextField = new TextField();
var format:TextFormat = new TextFormat(new MyFont().fontName,12);
var textFields:Array = [];

textBox.defaultTextFormat = format;
textBox.wordWrap = true;
textBox.multiline=true;
textBox.autoSize="left";
textBox.width=200;
textBox.htmlText = s;

addChild(textBox);
trace(textBox.numLines);

for (var i:int = 0; i<textBox.numLines; i++) {
var t:TextField = new TextField();
t.defaultTextFormat = format;
t.autoSize="left";
t.width=200;
var toParse:String = textBox.getLineText(i);
t.htmlText = checkString(toParse);
t.embedFonts=true;
t.width=200;
t.x=200;
t.y=10*i;
t.alpha=0;
addChil

这个问题算是解决了,希望对后来者有用
ruolins 2011-08-21
  • 打赏
  • 举报
回复

var str:String = "The quick brown fox jumps over the lazy dog\n";
var tf:TextField = new TextField();
tf.multiline = true;
tf.text = str + str + str;
var f:TextFormat = new TextFormat("Arial", 15, 0xFF0000, true, false,
true, null, null, TextFormatAlign.CENTER);
tf.setTextFormat(f, 0, str.length);
f = new TextFormat("Courier New", 12, 0x00FF00, false, false,
false, "http://www.google.com", null, TextFormatAlign.LEFT);
tf.setTextFormat(f, str.length, 2 * str.length);
f = new TextFormat("Times New Roman", 12, 0x0000FF, false, true,
true, null, null, TextFormatAlign.RIGHT);
tf.setTextFormat(f, 2 * str.length, str.length * 3);
tf.width = 400;
tf.height = 300
addChild(tf);
trace(tf.htmlText);



输出是
<P ALIGN="CENTER">
<FONT FACE="Arial" SIZE="15" COLOR="#FF0000" LETTERSPACING="0" KERNING="0">
<B>
<U>The quick brown fox jumps over the lazy dog</U>
</B>
</FONT>
</P>
<P ALIGN="LEFT">
<FONT FACE="Courier New" SIZE="12" COLOR="#00FF00" LETTERSPACING="0" KERNING="0">
<A HREF="http://www.google.com" TARGET="">The quick brown fox jumps over the lazy dog</A>
</FONT>
</P>
<P ALIGN="RIGHT">
<FONT FACE="Times New Roman" SIZE="12" COLOR="#0000FF" LETTERSPACING="0" KERNING="0">
<I>
<U>The quick brown fox jumps over the lazy dog</U>
</I>
</FONT>
</P>



这个是国外的一个论坛的,供以后遇着这个问题的兄弟们参考。
http://http://stackoverflow.com/questions/2170767/how-do-i-get-formatted-text-in-flash
ruolins 2011-08-20
  • 打赏
  • 举报
回复

国内的牛牛们咋不出来呢。
我在国外的论坛上面老外写的。
var lines:Array = _textFiled.htmlText.split("<br>");
for(var i:int =9;i<lines.length;i++) {

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

但是样看似有道理。但是还是不能实现。
ruolins 2011-08-18
  • 打赏
  • 举报
回复
ruolins 2011-08-18
  • 打赏
  • 举报
回复
我想可以计算字的宽度。这样假如textfiled宽度是1500,这样可以计算出梅行显示多少个汉字,但是还的考虑到会有数字,字母什么的,这样的的字符宽度应该和汉字不是一样的。哟没好的思路做这个各位。
flash的textfiled真是很让人纠结啊。、
ruolins 2011-08-18
  • 打赏
  • 举报
回复
没有一个人。

2,275

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧