Хорошо получилось, только вот объекты выстраиваются в линию. Нельзя ли сделать, так чтобы они сразу стартовали когда они достигнут конечной оси координат по y. Мне удалось, это сделать с помощью TweenLite, но хотелось бы увидеть анимацию, без этой библиотеке. Мой вариант TweenLite.
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Tween</title>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/TweenLite.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/plugins/CSSPlugin.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/easing/EasePack.min.js'></script>
</head>
<body>
<canvas id="canvas" width="670" height="500" style="background-color:#eee; border:1px solid #ccc;"></canvas>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var canvas = document.getElementById('canvas');
var x = 50;
var y = 50;
Rectangle = function(x,y,width,height)
{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.draw = function(ctx)
{
ctx.beginPath();
ctx.fillRect(this.x, this.y, this.width, this.height);
}
}
var rects;
var obj;
function animate() {
ctx.clearRect(0,0,canvas.width,canvas.height);
draw();
requestAnimationFrame(animate);
}
var rects = [];
function init()
{
for(var i=0; i < 20; i++)
{
rect = new Rectangle(50+i*30,70,20,40);
rects.push(rect);
}
}
function draw()
{
for(var i=0; i < rects.length; i++)
{
rects[i].draw(ctx);
}
}
init();
animate();
for(var i = rects.length-1; i >=0; i--)
{
console.log(rects[i]);
tweenSquare(rects[i],i);
}
function tweenSquare(s,i) {
TweenLite.to(s, 1+i*0.1, {y:100, ease: Cubic.easeInOutCubic,delay:0.1+i*0.1, onComplete: function() {
TweenLite.to(s, 1+i*0.1, {y:50, ease: Cubic.easeInOutCubic, onComplete: function() {
tweenSquare(s,0.1+i*0.1);
}})
}});
}
</script>
</body>
</html>