3

我正在尝试使用 Google Swiffy 将一些简单的 Flash 转换为 HTML5。我需要生成的输出具有透明背景。我已经在其他网站和这里阅读过,从 HTML 中删除 ("backgroundColor":-65536,) 文本应该可以工作。但是,对我来说,这只会使背景变黑。

也许 Swiffy 转换器已更改,此解决方案不再有效。有没有人有其他选择。

(我正在使用 Safari 和 Mobile Safari 进行测试)

4

6 回答 6

12

谷歌的回答——

如果您需要通过 wmode="transparent" 属性使背景透明,您可以在 Swiffy 输出中插入以下代码片段,就在调用 stage.start() 之前:

stage.setBackground(null);

您还可以将 null 替换为任何有效的 CSS 颜色规范字符串,以覆盖转换中定义的背景颜色。

https://www.google.com/doubleclick/studio/swiffy/faq.html

为我工作祝你好运

于 2013-10-07T05:56:24.547 回答
6

这是另一个适用于 5.2 运行时的 CSS 技巧。我添加class="swiffy-transparent"#swiffycontainerdiv 并应用了这个 css:

.swiffy-transparent svg g > g > rect {
    fill: transparent !important;
}
于 2013-10-03T22:48:32.830 回答
4

比您想象的要容易,只需在您的 html 脚本中识别这一行:

<script>

  var stage = new swiffy.Stage(document.getElementById('swiffycontainer'),
                               swiffyobject);

  stage.start();
  stage.setBackground(null); <!--and only have to add this line-->
</script>
于 2013-11-28T11:22:14.343 回答
2

对于 Swiffy 服务或它们输出的 *.swf.html 的最简单用法(假设您在 Web 应用程序的某处使用 jQuery):

setTimeout(function() {
    $('#swiffycontainer *:first-child').css("background", "transparent");
}, 100);

延迟是等到 Google 将他们的样式写入容器 div。这是一个糟糕的解决方案,因为如果您不管理 div 的呈现,它会导致闪烁;但是,我想大多数开发人员都在管理 swiffyobjects 并创建自己的 API 来控制它。

于 2013-06-11T17:47:04.983 回答
2

尝试background-colortransparent您的 CSS 中使用!important. 这对我有用。

#swiffycontainer div {
  background-color: transparent !important;
}
于 2013-06-14T21:56:04.687 回答
0

很抱歉回答我自己的问题,但我现在发现在 Swiffy 输出中删除“backgroundColor:nnnn”的方法已被 Google 在当前版本的 Swiffy 运行时中破坏。如果您还通过更改恢复到运行时的先前版本:

src="https://www.gstatic.com/swiffy/v5.2/runtime.js"

src="https://www.gstatic.com/swiffy/v5.1/runtime.js"

在文件的顶部,您应该会发现透明背景可以正常工作。

编辑:Michael Prescott 已经指出,由于 Swiffy 转换器版本和运行时之间的不匹配,该解决方案将无法可靠地工作。不依赖于 5.1 导出器的替代解决方案是在此处建议的其他解决方案的基础上构建。尝试将以下函数添加到脚本中。它轮询查看 Swiffy 对象何时安装了它的首选背景颜色,然后替换它。

(function() {
    var firstNode=document.getElementById('swiffycontainer').childNodes[1];
    //firstNode.style.visibility = "hidden";
    if (firstNode.style.background=="") {
        setTimeout(arguments.callee, 10);
    } else {
        firstNode.style.background = "none";
        //firstNode.style.visibility = "visible";
    }
})();

当 Swiffy 首先设置一个纯色背景然后它被替换时,这似乎并没有显示出故障。但是,为了更加确定,您可以启用注释掉的行来隐藏第一个节点,直到设置了正确的透明度。

此致

于 2013-06-10T23:09:03.237 回答