试图用Swiffy获得透明背景

时间:2013-06-09 20:48:17

标签: transparent google-swiffy

我正在尝试使用Google Swiffy将一些简单的Flash转换为HTML5。我需要结果输出具有透明背景。我在其他网站上阅读并here on SO从HTML中删除(“backgroundColor”: - 65536,)文本应该有效。但是,对我而言,这只会将背景变黑。

也许Swiffy转换器已经改变,这个解决方案不再适用。有没有人有任何其他选择。

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

6 个答案:

答案 0 :(得分:12)

谷歌的答案 -

  

如果你需要使背景透明,就像你所做的那样   wmode =“transparent”属性,可以插入以下代码   Swiffy输出中的片段,就在调用stage.start()之前:

     

stage.setBackground(空);

     

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

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

为我工作 祝你好运

答案 1 :(得分:6)

这是使用5.2运行时为我工作的另一个CSS技巧。我将class="swiffy-transparent"添加到#swiffycontainer div并应用了此css:

.swiffy-transparent svg g > g > rect {
    fill: transparent !important;
}

答案 2 :(得分: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>

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:2)

尝试使用background-color在CSS中设置transparent!important。这对我有用。

#swiffycontainer div {
  background-color: transparent !important;
}

答案 5 :(得分:0)

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

恢复到以前版本的运行时

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首次设置稳固背景然后被替换时,这似乎并没有出现故障。但是,为了更加确定,您可以启用注释掉的行来隐藏第一个节点,直到设置了正确的透明度。

最好的问候