如何仅使用动作脚本3在Flash中显示HTML页面

时间:2014-03-11 23:27:36

标签: html actionscript-3 flash

我一直试图在Flash SWF中显示html内容几个小时,我的方法是:

  • 在动态TextField上使用htmlText - 工作正常,我添加了regexp来检查' /"属性周围存在符号,因为缺少这些符号会在第一次出现时破坏文本的显示:

    var attrPattern:RegExp = /=([^('|")][a-zA-Z0-9]*)/g;
    var fixedHtml:String = unfixedHtml.replace(attrPattern, "='$1'");
    

    不幸的是像“红色”这样的颜色。不起作用,但'#FF0000'确实。我可以添加一些表格查找来修复颜色,但我发现了之前想要尝试的其他解决方案,

  • MiniHtml运行良好,但它需要精心构建的html文件,所有标签都匹配,例如它需要匹配/ br到br - 我做了一些regexp替换,但不幸的是代码如下:

    <p> this is <b>bold</b> text</p>
    
    XML解析器不接受

  • HTMLLoader - 似乎只适用于AIR,
  • htmlWrapper - 我试过很难找到一个能够显示flash AS 3.0内部代码的例子。该项目似乎已停止使用,我已尝试使用它但没有文档我无法走得太远 - 如果有人有任何如何使用它的示例请分享
  • ASTRID - AS中的整个MVC,有一些html渲染为htmlWrapper,没有关于如何在flash中使用渲染器的示例

提前感谢任何有关我的问题的不同方法的例子或主张

4 个答案:

答案 0 :(得分:0)

我建议使用TLF。 Text Layout Framework有很多工厂可以解析和显示HTML内容,但这就是你要显示多么复杂的html。它想要显示完整的html页面,TLF将无法帮助您完成此任务。但是如果你使用html格式的内容,TLF是一个不错的选择。检查HTML rendering的TLF功能。

答案 1 :(得分:0)

为什么不使用StageWebView?

答案 2 :(得分:0)

如果您的应用程序在浏览器中运行,还有一个选项,但它有点脏。 您可以使用浏览器呈现html。使用ExternalInterface创建并放置&lt; iframe &gt;在你的瑞士法郎。然后将必要的html代码放在此 iframe 中。

是的,这是一个奇怪的解决方案,但它确实有效。

答案 3 :(得分:0)

var myTextBox:TextField= new TextField();
myTextBox.width = FlexGlobals.topLevelApplication.ScreenWidth;
myTextBox.top = 0;
myTextBox.bottom = 0;
myTextBox.multiline = true; 
myTextBox.wordWrap = true; 
myTextBox.htmlText = "<html><body>bla bla</html>"; 


var wrapper:SpriteVisualElement = new SpriteVisualElement();
yourGroup.addElement(wrapper);

wrapper.addChild(myTextBox);