【问题标题】:Flash Lite: htmlText formattingFlash Lite:htmlText 格式化
【发布时间】:2010-12-15 10:42:47
【问题描述】:

简而言之
我有一个 flash 应用程序(为 flash lite 制作的 - actionscript 2)。 当我在我的应用程序中加载一个 XML 文件并在一个对象中处理它。我在文本字段中获得了正确的 html 输入。
但是,如果我对对象进行硬编码,所有 html 标记都会从 .htmlText 属性中消失,并且会在文本前面放置代码。我打算对对象进行硬编码,因为加载速度比 xml 快很多。

长话短说:string.html = true; 删除所有 span 标签,而我需要这些标签。如何在我的文本字段的 htmlText 中获取跨度标签?

更多信息如下

在我的应用程序中,我创建了文本字段,将一些文本放入其中,然后设置正确的 x 和 y 值,这样它们就可以很好地放在彼此下方。

函数内部:

//ABOVE I CREATE TEXTFIELD USING THE .CREATETEXTFIELD FUNCTION
this["text" + this._textFieldCounter].html = true;
this["text" + this._textFieldCounter].multiline = true;
this["text" + this._textFieldCounter].wordWrap = true;
this["text" + this._textFieldCounter].autoSize = true;
this["text" + this._textFieldCounter].styleSheet = this._styleSheet;
this["text" + this._textFieldCounter].condenseWhite = true;
this["text" + this._textFieldCounter].htmlText = "<span class=\"page\">" + strHtmlText + "</span>";
//trace(this["text" + this._textFieldCounter].htmlText);

当我跟踪 htmlText 我得到 ​​p>

<P ALIGN="LEFT">
<FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">
//here comes the strHtmlText
</FONT>
</P>

Flash 会自动将那些 p 和 font 标签放在我的文本前面。所以我的样式表不会显示正确的样式。如何摆脱最初的对齐和字体标签,但仍将文本字段保留为 html?

编辑
通过设置文本格式,我找到了解决此问题的方法...但是
我有一个新问题:
在我的 strHtmlText 中有跨度标签(&lt;span class="text-in"&gt;blabla&lt;/span&gt;),但这被过滤掉了。为什么 ?如果没有这些样式,我的样式表什么也做不了。

(文本从数组中加载)

【问题讨论】:

    标签: flash actionscript actionscript-2 htmltext


    【解决方案1】:

    它必须与您将属性分配给 TextField 的顺序有关。应该是:1.将field.html设置为true,2.分配styleSheet,3.设置htmlText。 必须在分配 htmlText 之前设置 styleSheet - 我最初发布了指向 as3 文档的链接,但对于 AS2 和 AS3 都是如此。

    试试这个:在新的 AS2 FLA 的舞台上放置一个 TextField。将其类型设置为动态。将其命名为“_textField”。将字体设置为 Verdana,16px,黑色。输入“错误”。或类似文本字段的内容,以便其中包含一些文本。单击“嵌入字体”,确保包含足够数量的字母,例如 ascii 或 Latin-1。 在时间轴上,将此代码输入到电影的第一帧。

    var style:TextField.StyleSheet = new TextField.StyleSheet();
    style.parseCSS("p {font-family:Verdana; font-size:12px; color:#FF0000;}");
    _textField.html = true;
    _textField.styleSheet = style
    _textField.htmlText = "<p>This is a test.</p>";
    trace (" new text:"+_textField.htmlText);
    

    现在,当您运行程序时,它应该将文本更改为“这是一个测试”,颜色为红色,字体大小为 12 像素。它在我的电脑上。此外,跟踪打印的文本与分配给 htmlText 的文本完全相同。

    现在返回并交换分配styleSheethtmlText 属性的行。重新运行程序。它将包含您抱怨的所有额外标签。

    【讨论】:

    • 我正在使用 AS2(在标签中定义)...但是如果我在 htmlText 之前设置样式表属性,它仍然是同样的问题。
    • 我编辑了原始帖子并提供了一个示例。我仍然认为您分配 styleSheet 和 htmlText 的顺序有问题。或者也许 styleSheet 没有正确初始化。但是,这不是 Flash 中的错误。
    • 我同意您的论点和示例有效。但是,当我在我的应用程序中尝试它时,如果 html 参数设置为 true,span 标签仍然会从字符串中删除。我什至会说所有普通的 html,如粗体和斜体标签也会被删除。仅保留 flash 字体标签,双 br 标签成为闭合段落标签。
    • 好吧,我使用 span 已经有一段时间了 - 绝对没有理由它们不应该工作。除非您的程序中有其他不完全正确的地方。我建议查看字体和样式表初始化:如果 Flash 找不到正确的字体和/或样式信息,几乎总是什么都不会显示。
    • 嗨,又是我:您所描述的正是发生的情况,当 StyleSheet 不可用,或者如果您的 htmlText 中的样式不在其中,或者这些样式中使用的字体没有嵌入。您能否在调用 textField.htmlText 时检查您的 styleSheet 是否已正确加载和初始化?也许只是像我一样对 styleSheet 进行硬编码,以确保样式可用。另外,检查样式​​表中的字体名称是否与 Flash 中的字体屏幕名称相同。使用 Font.enumerateFonts() 来检查。
    猜你喜欢
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2019-09-09
    • 2015-06-07
    • 2014-08-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多