Javascript Raphael设置透明png不透明度丢失alpha通道
我用的是拉斐尔2.1.0 当我在IE8下设置透明PNG的不透明度动画时,透明度动画效果很好。即:从“不透明度0.0”到“不透明度1.0” 不透明度动画结束后,我希望将图像的位置/不透明度设置/恢复为动画前的状态,但图像的alpha通道将变为不透明。从前透明的背景现在变成了白色的正方形 有了SVG渲染器——Chrome和Firefox——一切都很好。我试着把图像、翻译和alpha链接起来,但都没有用 代码如下:Javascript Raphael设置透明png不透明度丢失alpha通道,javascript,internet-explorer,svg,raphael,vml,Javascript,Internet Explorer,Svg,Raphael,Vml,我用的是拉斐尔2.1.0 当我在IE8下设置透明PNG的不透明度动画时,透明度动画效果很好。即:从“不透明度0.0”到“不透明度1.0” 不透明度动画结束后,我希望将图像的位置/不透明度设置/恢复为动画前的状态,但图像的alpha通道将变为不透明。从前透明的背景现在变成了白色的正方形 有了SVG渲染器——Chrome和Firefox——一切都很好。我试着把图像、翻译和alpha链接起来,但都没有用 代码如下: var element = this._paper.image(image.Url()
var element = this._paper.image(image.Url(), 0, 0, width, height);
var removeOnStop = true;
var fromParams = {}
var toParams = {};
// From options
fromParams.opacity = options.from.alpha;
// ...
element.attr(fromParams);
// To options
toParams.transform = 'T300,300';
toParams.opacity = options.to.alpha;
// Animate
var anim = Raphael.animation(toParams, duration, 'linear', function() {
if (removeOnStop) {
element.attr({ opacity: defaultProperties.alpha });
element.transform('T' + defaultProperties.left + ',' + defaultProperties.top);
}
}).repeat(repeat);
element.animate(anim);
任何帮助都将不胜感激。我尝试了以下方法
- 在任何地方都设置alpha动画,但这会导致Raphael中出现空引用问题
- 链接
/translate()
和transform()
attr()
- 将过滤器直接应用于对象
- 更改顺序(转换前attr,反之亦然)
attr
转换和设置不透明度:
if (removeOnStop) {
element.attr({ opacity: defaultProperties.alpha });
element.transform('T' + defaultProperties.left + ',' + defaultProperties.top);
}
变成
if (removeOnStop) {
element.attr({ transform: 'T' + defaultProperties.left + ',' + defaultProperties.top,
opacity: defaultProperties.alpha });
}
重要的是,在最初创建图像和设置初始不透明度时必须执行此操作
我希望这能避免人们将来的麻烦。谢谢,我今天就需要它:)这适用于
.image
元素。我希望它也能用于路径或其他元素上的图像填充,但似乎不行——任何变换似乎都会永久性地破坏这些元素的PNG透明度。