RaphaelJS:如何制作一个又一个元素的动画
RaphaelJS: How to animate element after another elements animation is done?
我想在上一个元素完成动画后为其设置动画。Righ现在我的代码是这样的:
var canvas = Raphael(0, 0, 1000, 1000 );
var boxWidth = 80;
var boxHeight = 30;
var rectangles = canvas.set();
rectangles.push(canvas.rect(460, 30, 0, 0),
canvas.rect(460, 90, 0, 0),
canvas.rect(460, 150, 0, 0),
canvas.rect(460, 210, 0, 0),
canvas.rect(460, 270, 0, 0));
rectangles.attr({fill: "#e00", stroke: "#fff"});
rectangles[0].animate(anim.delay(200));
rectangles[1].animate(anim.delay(400));
rectangles[2].animate(anim.delay(800));
rectangles[3].animate(anim.delay(1200));
rectangles[4].animate(anim.delay(1600));
在这里,我手动提供了增加的延迟值,如200400800。对于一大组元素来说,这将是一个相当令人厌烦的计算。我认为必须有另一种方法来做到这一点,通过链接一个动画到其他动画结束。请引导。
上面发布的代码中缺少一些内容。这个缺失的部分正是动画完成后运行另一个动画的方式。
缺少的部分是如何创建anim
对象。
创建anim
时,Raphael.animation
允许您提供一个回调,该回调将在动画完成后调用:
var anim = Raphael.animation(params, duration, easing, next_callback);
function next_calback () {/* ... */}
现在你可以这样处理你的矩形:
var i=0;
function next_callback () {
if (rectangles[i]) {
rectangles[i].animate(anim);
i++;
}
}
next_callback(); // kickstart the animation
当然,您可以将回调命名为比next_callback
更具描述性的名称,并且可以将整个内容封装在闭包中,这样i
就不会作为全局变量公开,但这是基本结构。
在循环中使用矩形代码。在循环中添加动画代码。此处延迟自动增加到2004008001600
var delay = 200;
for(i = 0;i<rectangles.length;i++){
rectangles[i].animate(anim.delay(delay));
delay = delay+delay;
}
相关文章:
- 使用svg和javascript将一个类的元素动画化为另一个类
- 如何在一个元素动画之后延迟
- 将列表元素动画制作到顶部
- 如何在山露网站上完成元素动画
- 制作AngularJS路线之间的英雄元素动画
- 设置元素动画jquery
- 我将如何修复由于上面的元素动画而移动的元素
- 修复了元素动画滚动主体在顶部
- 无法在 jquery 中获取元素动画以等待另一个元素动画
- Javascript - 从任何位置将元素动画到屏幕中心
- 在设置元素动画的过程中降低速度
- 跳转到元素动画
- jQuery鼠标后跟事件与元素动画相结合
- 使用Jquery将元素动画制作到窗口的右边缘
- Jquery/CSS带回调的顺序元素动画
- 如何在jquery中停止以前的dom元素动画
- 元素.动画,在动画完成后应用样式更改
- 在Bootstrap Modal中检测滚动使滚动上的每个元素动画化
- 当绑定值发生变化时,如何使元素动画化?
- 检测子元素动画