SnapSvg 中的定时动画
Animation with timing in SnapSvg
我目前正在使用 SnapSvg,但在动画方面遇到了一些问题。
我有一个元素说圆圈,并希望它在页面加载 10 秒后以动画淡入淡出的形式出现。
我们可以像在 HTML5 SVG
中那样执行它
<circle id="c1" cx="50" cy="30" r="26" fill="#ff0000" opacity="0" />
<set xlink:href="#c1" attributeName="opacity" attributeType="CSS" from="0" to="1" />
在 SnapSVG 中我们也可以创建没有时间的动画如下:
var c1=page.circle(50,30,26);
c1.attr({
fill:"#ff0000",
opacity:0
});
c1.animate({opacity:1},1000);
但是我实在无法在第二种情况下应用计时。
有人请帮忙。
您可以使用 setInterval
向 SVG 添加不透明度步骤,从而模拟褪色。
这可能会给你一个提示:(假设你有一个带有 id="c1"
的元素:
//Function that fades out elements
function fadeOutElement(elementId,time){
var element = document.getElementById(elementId);
var opacity = 1;
function fadeOut(){
opacity = opacity - 0.01;
element.setAttribute('opacity',String(opacity));
//clear interval when opacity reaches 0;
if (opacity<=0) clearInterval(fadeInterval);
}
var fadeInterval = setInterval(function(){fadeOut()},time);
}
//call function and pass arguments, id of element and the interval time for each step
fadeOutElement('c1',1);
这是上述代码段的 JSFiddle
注:
然而,这 不 使用 snap.svg 方法,因为您希望在整个过程中编写统一代码,所以最好使用这些方法。所以 snap.svg 解决方案会更好。
我对这个话题做了很多研究,后来知道@lan 是绝对正确的。!
这个问题唯一的解决办法是:
setTimeout(function(){c1.animate({opacity:"1"},1000)},1500);
其中setTimeout()
函数的第二个参数是动画开始的时间。您还可以使用此方法放置尽可能多的动画。
我目前正在使用 SnapSvg,但在动画方面遇到了一些问题。 我有一个元素说圆圈,并希望它在页面加载 10 秒后以动画淡入淡出的形式出现。 我们可以像在 HTML5 SVG
中那样执行它<circle id="c1" cx="50" cy="30" r="26" fill="#ff0000" opacity="0" />
<set xlink:href="#c1" attributeName="opacity" attributeType="CSS" from="0" to="1" />
在 SnapSVG 中我们也可以创建没有时间的动画如下:
var c1=page.circle(50,30,26);
c1.attr({
fill:"#ff0000",
opacity:0
});
c1.animate({opacity:1},1000);
但是我实在无法在第二种情况下应用计时。 有人请帮忙。
您可以使用 setInterval
向 SVG 添加不透明度步骤,从而模拟褪色。
这可能会给你一个提示:(假设你有一个带有 id="c1"
的元素:
//Function that fades out elements
function fadeOutElement(elementId,time){
var element = document.getElementById(elementId);
var opacity = 1;
function fadeOut(){
opacity = opacity - 0.01;
element.setAttribute('opacity',String(opacity));
//clear interval when opacity reaches 0;
if (opacity<=0) clearInterval(fadeInterval);
}
var fadeInterval = setInterval(function(){fadeOut()},time);
}
//call function and pass arguments, id of element and the interval time for each step
fadeOutElement('c1',1);
这是上述代码段的 JSFiddle
注: 然而,这 不 使用 snap.svg 方法,因为您希望在整个过程中编写统一代码,所以最好使用这些方法。所以 snap.svg 解决方案会更好。
我对这个话题做了很多研究,后来知道@lan 是绝对正确的。!
这个问题唯一的解决办法是:
setTimeout(function(){c1.animate({opacity:"1"},1000)},1500);
其中setTimeout()
函数的第二个参数是动画开始的时间。您还可以使用此方法放置尽可能多的动画。