Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash TextConvert正在导出HTML和正文标记_Flash_Apache Flex_Tlf - Fatal编程技术网

Flash TextConvert正在导出HTML和正文标记

Flash TextConvert正在导出HTML和正文标记,flash,apache-flex,tlf,Flash,Apache Flex,Tlf,我使用TextConverter类将TextFlow导出为HTML,并在导出中导出HTML和字体标记。有没有办法防止它只输出内容而不输出 以下是我的AS3: var output:String = TextConverter.export(RichText(textComponent).textFlow, TextConverter.TEXT_FIELD_HTML_FORMAT, ConversionType.STRING_TYPE); 示例输出: <HTML><BODY&g

我使用TextConverter类将TextFlow导出为HTML,并在导出中导出HTML和字体标记。有没有办法防止它只输出内容而不输出

以下是我的AS3:

var output:String = TextConverter.export(RichText(textComponent).textFlow, TextConverter.TEXT_FIELD_HTML_FORMAT, ConversionType.STRING_TYPE);
示例输出:

<HTML><BODY><P ALIGN="left"><FONT FACE="Arial" SIZE="12" COLOR="#000000" 
LETTERSPACING="0" KERNING="1">Here is some content. 
</FONT></P></BODY></HTML>
创建此XML的:

<HTML>
  <BODY>
    <P ALIGN="left">
      <FONT FACE="Arial" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="1">
        My text content
      </FONT>
    </P>
  </BODY>
</HTML>
执行导入和导出操作的类有:

TextFieldHtmlImporter,  TextFieldHtmlExporter
这些类看起来很容易修改。您可以在应用程序中的某个位置使用以下代码:

TextConverter.removeFormat(TextFieldHtmlExporter);
TextConverter.addFormat(MyNewTextFieldHtmlExporter);

下面是一个简单的解决方案,您可以对其进行扩展和修改

TextConverter.removeFormat(TextConverter.TEXT_FIELD_HTML_FORMAT);
TextConverter.addFormat(TextConverter.TEXT_FIELD_HTML_FORMAT, flashx.textLayout.conversion.TextFieldHtmlImporter, TextFieldHTMLExporter2, null);
创建以下类,
textfieldtmlexporter2.as

package {

    import flashx.textLayout.tlf_internal;
    import flashx.textLayout.conversion.TextFieldHtmlExporter;
    import flashx.textLayout.formats.ITextLayoutFormat;

    use namespace tlf_internal;

    public class TextFieldHTMLExporter2 extends TextFieldHtmlExporter {


        public function TextFieldHTMLExporter2() {

        }


        /**  
         * Exports certain character level formats as a <FONT/> with appropriate attributes
         * @param format format to export
         * @param ifDifferentFromFormat if non-null, a value in format is exported only if it differs from the corresponding value in ifDifferentFromFormat
         * @return XML  the populated XML element
         * @private
         */ 
        override tlf_internal function exportFont(format:ITextLayoutFormat, ifDifferentFromFormat:ITextLayoutFormat=null):XML
        {
            var font:XML = super.exportFont(format, ifDifferentFromFormat);


            if (!ifDifferentFromFormat || ifDifferentFromFormat.fontSize != format.fontSize) {
                font = super.exportFontAttribute(font, "SIZE", format.fontSize);
                delete font.@SIZE;

                font.@style = "font-size:" + format.fontSize + "px";
            }

            return font;
        }
    }
}
包{
导入flashx.textLayout.tlf_internal;
导入flashx.textLayout.conversion.TextFieldHtmlExporter;
导入flashx.textLayout.formats.ITextLayoutFormat;
使用名称空间tlf_internal;
公共类TextFieldHTMLExporter2扩展了TextFieldHtmlExporter{
公共函数TextFieldHTMLExporter2(){
}
/**  
*将某些字符级格式导出为具有适当属性的
*@param要导出的格式
*@param ifDifferentFromFormat如果非null,则仅当格式中的值与ifDifferentFromFormat中的相应值不同时,才会导出格式中的值
*@return XML填充的XML元素
*@私人
*/ 
重写tlf_内部函数exportFont(格式:ITextLayoutFormat,ifDifferentFromFormat:ITextLayoutFormat=null):XML
{
var-font:XML=super.exportFont(格式,ifDifferentFromFormat);
如果(!ifDifferentitfromFormat | | ifDifferentitfromFormat.fontSize!=format.fontSize){
font=super.exportFontAttribute(字体,“大小”,格式.fontSize);
删除字体大小;
font@style=“font-size:+format.fontSize+“px”;
}
返回字体;
}
}
}
上一个类更正了字体大小问题。还有很多东西可以更新。如果我发布这个类,我会在这里添加一个链接

注意:

字体大小错误在于,当文本大小的高度为12 px时,它会设置
size=“12”
,这与
style=“font size:12px”
不同。如果要设置
SIZE
属性,则需要将其转换为等效值。见问题

我在这里遇到了几乎相同的问题,导出了许多原始TLF中没有的样式。原创:如果你开始使用一个新的TextConverter类,请告诉我。我会帮忙的。我可能在下个月的某个时候在我的github上会有一个。我试着摆弄“InterActionManager”类,但没有乐趣,除非TextFlow附加到某种RichText,否则它是空的。因此,另一个选择是逐步遍历TextFlow的子级(使用“mxmlchildren”属性),并基于每个子对象的“format”对象的属性构建一个XML文档。经过一段时间的思考,我最终放弃了这个想法,因为我的根标签(一个TLF“段落”)暴露了我从未设置过的样式格式:Arial字体,大小12,黑色:看起来这是一个默认硬编码的地方,但就是找不到确切的位置。我不确定这将是我现在的优先事项,很抱歉无法提供更多帮助。
TextFieldHtmlImporter,  TextFieldHtmlExporter
TextConverter.removeFormat(TextFieldHtmlExporter);
TextConverter.addFormat(MyNewTextFieldHtmlExporter);
TextConverter.removeFormat(TextConverter.TEXT_FIELD_HTML_FORMAT);
TextConverter.addFormat(TextConverter.TEXT_FIELD_HTML_FORMAT, flashx.textLayout.conversion.TextFieldHtmlImporter, TextFieldHTMLExporter2, null);
package {

    import flashx.textLayout.tlf_internal;
    import flashx.textLayout.conversion.TextFieldHtmlExporter;
    import flashx.textLayout.formats.ITextLayoutFormat;

    use namespace tlf_internal;

    public class TextFieldHTMLExporter2 extends TextFieldHtmlExporter {


        public function TextFieldHTMLExporter2() {

        }


        /**  
         * Exports certain character level formats as a <FONT/> with appropriate attributes
         * @param format format to export
         * @param ifDifferentFromFormat if non-null, a value in format is exported only if it differs from the corresponding value in ifDifferentFromFormat
         * @return XML  the populated XML element
         * @private
         */ 
        override tlf_internal function exportFont(format:ITextLayoutFormat, ifDifferentFromFormat:ITextLayoutFormat=null):XML
        {
            var font:XML = super.exportFont(format, ifDifferentFromFormat);


            if (!ifDifferentFromFormat || ifDifferentFromFormat.fontSize != format.fontSize) {
                font = super.exportFontAttribute(font, "SIZE", format.fontSize);
                delete font.@SIZE;

                font.@style = "font-size:" + format.fontSize + "px";
            }

            return font;
        }
    }
}