Flash TextConvert正在导出HTML和正文标记
我使用TextConverter类将TextFlow导出为HTML,并在导出中导出HTML和字体标记。有没有办法防止它只输出内容而不输出 以下是我的AS3: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
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;
}
}
}