Flash超链接间距错误

时间:2020-03-05 18:49:26  来源:igfitidea点击:

我有一个涉及Flash文本和超链接的怪异错误,带有<a>标签的TextField中的htmlText似乎会截断周围的空间:

输出http://www.anti-pattern.net/tvo/output1.gif

一旦将光标放在文本上,它就会"修复"自身:

鼠标悬停输出http://www.anti-pattern.net/tvo/output2.gif

这是textField中的HTML:

<p>The speeches at both the <a href="http://www.demconvention.com/speeches/" target="_blank">Democratic National Convention</a> last week and the <a href="http://www.gopconvention2008.com/videos" target="_blank">Republican National Convention</a> this week, have been, for me at least, must see TV.</p>

当我禁用添加到它的styleSheet时,效果仍然会发生,但是将鼠标放在它上面并不能固定间距。我正在使用"抗锯齿以提高可读性",并且嵌入了所有大写字母,小写字母,数字和标点符号。我还将指出,如果将渲染设置更改为"使用设备字体",该错误将消失。

有什么想法吗?

解决方案

回答

如果在anchor元素之前和之后立即放置不间断空格,会有所不同吗?

<p> ...  <a ... >Link text</a>  ... </p>

固然最好的解决方法是,但它可能会让我们花费一些时间来研究真正的解决方案。

回答

确保styleSheet声明了它对锚点的作用。如果我们正在使用CSS,那么我们显然在使用htmlText,只要它在<a href"前面看到<,就立即寻找a的CSS类定义,当找不到它时,结果是我们看到的外观不同的文本。

将以下内容添加到CSS中,并确保其样式,宽度和大小与文本的常规样式具有相同的设置。唯一应该不同的是颜色。

a:link
{
   font-family: sameAsReg;
   font-size: 12px; //Note flash omits things like px and pt.
   color:#FF0000; //Red
}

确保要嵌入的字体在库中并且已实例化到代码中。当我们仅可以在运行时从库中加载字体然后在任何地方使用它时,通过UI嵌入每个文本字段都是很愚蠢的。

我们还可以在编译时导入多种字体,并使用<class span =" someCSSClass">某些文本</ span> <class span =" someOtherCSSClass">某些其他文本</ span>在同一文本字段中使用它们。

祝你好运,我希望这会有所帮助。

回答

圣牛也有同样的问题。显然,设置变量的顺序很重要。在该线程上查找第六个答复。我还注意到,这仅在AntiAliasType.ADVANCED中发生,这是TextField上的默认设置。

_description = new TextField();
_description.selectable = false;
_description.width = WIDTH; // Global.
addChild(_description);

var myriadPro:Font = new MyriadPro(); // Embedded font.
var style:StyleSheet = new StyleSheet();

var styleObj:Object = new Object();
styleObj.fontFamily = myriadPro.fontName;
styleObj.fontSize   = 13;
styleObj.textAlign  = "left";
styleObj.color      = "#FFFFFF";

style.setStyle("p", styleObj);
style.setStyle("a:link", styleObj);
style.setStyle("a:hover", styleObj);

_description.autoSize = TextFieldAutoSize.LEFT;
_description.antiAliasType = AntiAliasType.ADVANCED;
_description.condenseWhite = true;
_description.wordWrap   = true;
_description.multiline  = true;
_description.embedFonts = true;

_description.styleSheet = style;
_description.htmlText = '<p>A short description with an <a href="http://www.example.com/">HTML</a> link that can be clicked.</p>';

回答

我也遇到了这个问题,发现为我设置了以下内容。

yourTextField.gridFitType = GridFitType.SUBPIXEL;

看来这可能是由于将" AntiAliasType"设置为Advanced(默认为PIXEL gridFitType)引起的。我认为它会尝试将某些副本转移到试图将字符固定为整个像素值的位置。

回答

我尝试了上述所有方法,但发现确保autosize = false可以解决此问题。