我正在尝试使用 Google Swiffy 将一些简单的 Flash 转换为 HTML5。我需要生成的输出具有透明背景。我已经在其他网站和这里阅读过,从 HTML 中删除 ("backgroundColor":-65536,) 文本应该可以工作。但是,对我来说,这只会使背景变黑。
也许 Swiffy 转换器已更改,此解决方案不再有效。有没有人有其他选择。
(我正在使用 Safari 和 Mobile Safari 进行测试)
我正在尝试使用 Google Swiffy 将一些简单的 Flash 转换为 HTML5。我需要生成的输出具有透明背景。我已经在其他网站和这里阅读过,从 HTML 中删除 ("backgroundColor":-65536,) 文本应该可以工作。但是,对我来说,这只会使背景变黑。
也许 Swiffy 转换器已更改,此解决方案不再有效。有没有人有其他选择。
(我正在使用 Safari 和 Mobile Safari 进行测试)
谷歌的回答——
如果您需要通过 wmode="transparent" 属性使背景透明,您可以在 Swiffy 输出中插入以下代码片段,就在调用 stage.start() 之前:
stage.setBackground(null);
您还可以将 null 替换为任何有效的 CSS 颜色规范字符串,以覆盖转换中定义的背景颜色。
https://www.google.com/doubleclick/studio/swiffy/faq.html
为我工作祝你好运
这是另一个适用于 5.2 运行时的 CSS 技巧。我添加class="swiffy-transparent"
到#swiffycontainer
div 并应用了这个 css:
.swiffy-transparent svg g > g > rect {
fill: transparent !important;
}
比您想象的要容易,只需在您的 html 脚本中识别这一行:
<script>
var stage = new swiffy.Stage(document.getElementById('swiffycontainer'),
swiffyobject);
stage.start();
stage.setBackground(null); <!--and only have to add this line-->
</script>
对于 Swiffy 服务或它们输出的 *.swf.html 的最简单用法(假设您在 Web 应用程序的某处使用 jQuery):
setTimeout(function() {
$('#swiffycontainer *:first-child').css("background", "transparent");
}, 100);
延迟是等到 Google 将他们的样式写入容器 div。这是一个糟糕的解决方案,因为如果您不管理 div 的呈现,它会导致闪烁;但是,我想大多数开发人员都在管理 swiffyobjects 并创建自己的 API 来控制它。
尝试background-color
在transparent
您的 CSS 中使用!important
. 这对我有用。
#swiffycontainer div {
background-color: transparent !important;
}
很抱歉回答我自己的问题,但我现在发现在 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 首先设置一个纯色背景然后它被替换时,这似乎并没有显示出故障。但是,为了更加确定,您可以启用注释掉的行来隐藏第一个节点,直到设置了正确的透明度。
此致