Flash超链接似乎会截断周围空间

时间:2008-09-08 15:51:42

标签: flash actionscript-3

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

output

将光标放在文本上后,它“修复”了自己:

output with mouseover

这是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时,效果仍然会发生,但将鼠标放在它上面并不能修复间距。我使用“Anti-alias for readability”,并嵌入了所有大写,小写,数字和标点符号。我还要指出,如果我将渲染设置更改为“使用设备字体”,则该错误就会消失。

有什么想法吗?

6 个答案:

答案 0 :(得分:1)

确保styleSheet声明它应该对Anchors做什么。你很明显使用htmlText,如果你看到&lt;在“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嵌入每个文本字段是愚蠢的。

您还可以在编译时导入多个字体,并使用&lt;在同一文本字段中使用它们。 class span =“someCSSClass”&gt; Some Text&lt; /跨度&GT;&LT; class span =“someOtherCSSClass”&gt;一些其他文字&lt; /跨度&GT;

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

答案 1 :(得分:1)

圣牛也有同样的问题。显然,您设置变量的顺序很重要。查看this thread上的第六个回复。我还注意到这只发生在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>';

答案 2 :(得分:1)

我也遇到了这个问题,并找到了以下修复方法。

yourTextField.gridFitType = GridFitType.SUBPIXEL;

看起来好像它可能是由AntiAliasType设置为高级时默认为PIXEL gridFitType引起的。我认为它会将一些副本移动,因为它试图将字符固定为整个像素值。

答案 3 :(得分:1)

我尝试了以上所有内容,但发现确保autosize = false是为我修复它的原因。

答案 4 :(得分:1)

我遇到了同样的问题。如果将autoSize设置为center,则可以解决问题。我不知道为什么,但它确实修复了它。这似乎是一个Flash bug。

答案 5 :(得分:0)

如果你在锚元素之前和之后立即放置非破坏空格会有什么不同吗?

<p> ... &nbsp;<a ... >Link text</a>&nbsp; ... </p>

不可否认,最好是一种解决方法,但它可能会花一些时间研究一个真正的解决方案。