ActionScript-大家都是怎么解决兼容性问题的?

ActionScript-大家都是怎么解决兼容性问题的?

瑾兮 发布于 2017-06-01 字数 231 浏览 983 回复 2

很多浏览器的支持、flash小版本都有各种各样诡异的现象。
比如flash 10.3.183.5的文本换行问题
请输入图片描述

有没有一个好的思路或者方向?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-10-22 2 楼

1、首先能想到的是尝试使用textField.htmlText 替代 textField.text;
2、其次可能尝试的思路是手动换行,下面是AS3的代码,需要转换为AS2版,它应该也能起作用的。

var text : String = "some text here";
var textField : TextField = new TextField();
textField.wordwrap = false;
textField.multiline = false;
textField.autosize = false;
textField.width = MAX_TEXT_WIDTH;
//other formatting stuff

var words : Array = text.split(" ");
var line : String = words[0];
textField.text = words[0];

var lines : Array = new Array();//will contain all lines
for(var i : int = 1; i < words.length; ++i)//start at second word
{
textField.text += " " + words[i];//try adding another word to the line
if(textField.textWidth > MAX_TEXT_WIDTH)//overflowed line
{
lines.push(line);
line = words[i];
textField.text = line;
}
else//doesn't overflow, line is still valid
{
lines += textField.text;
}
}
lines.push(line);

var text : String = lines[0];
for(i = 1; i < lines.length; ++i)
{
text += "n" + lines[i];
}

textField.multiline = true;
textField.height = lines.length * HEIGHT_PER_LINE;//HEIGHT_PER_LINE can be found using getLineMetrics and
//adding gutter pixels to the height - might have to
//play a little with this
textField.text = text;

不确定能不能编译通过,但至少给出了一般思路,自己尝试做下文本换行来检查是否正确。同时在检查textWidth时确定样式是用于文本。另外每次在更改textField.text 的值时,都要调用setTextFormat(myTextFormat)函数。

另外很明显multiline可能工作不正常,这时你需要为每一行创建一个新的TextField组件,并设置y偏移,以便看起来他们是同一个TextField,这种情况下最好不用使用边框或背景色了。

偏爱自由 2017-08-05 1 楼

针对你这个问题,在这个地方应用的话,可以设置autoSize属性

var tf:TextField = new TextField();
tf.autoSize = "left";
tf.wordWrap = false;

这样设置,就不会出现你这种情况了。