tween dynamic array with 17.3.0

A comparison between Tweenjs, Createjs.Tweenjs and GreenSock TweenLite

by Lukasz Guminski

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/tween.js/17.3.0/Tween.min.js"></script>

<div id="target"></div>

CSS

html,
body {
  margin: 0px;
  cursor: pointer;
}

#target {
  font-size: 13px;
  padding: 0px 32px;
}

JavaScript

init();
			animate();

			function init() {

			  var width = 480;
			  var height = 320;

			  var target = document.getElementById('target');

			  var canvas = document.createElement('canvas');
			  canvas.width = width;
			  canvas.height = height;
			  target.appendChild(canvas);

			  var context = canvas.getContext('2d');

			  var rabbit1 = {
			    x: 50,
			    y: height - 50
			  };

			  var rabbit2 = {
			    x: width - 50,
			    y: 50
			  };

			  var rabbits = {
			    x: [rabbit1.x, rabbit2.x],
			    y: [rabbit1.y, rabbit2.y]
			  };

			  new TWEEN.Tween(rabbit1).to({
			    x: width - 50,
			    y: height - 50
			  }, 3000).onUpdate(function(object) {
			    rabbits.x[1] = object.x;
			    rabbits.y[1] = object.y;
			    // draw background
			    context.fillStyle = "rgb(240,250,240)";
			    context.fillRect(0, 0, width, height);

			    // draw rabbit
			    context.fillStyle = "rgb(0,0,150)";

			    context.save();
			    context.translate(object.x, object.y);

			    context.beginPath();
			    context.moveTo(0, 0);
			    context.bezierCurveTo(15, 0, 15, -40, 5, -30);
			    context.lineTo(0, 0);
			    context.bezierCurveTo(-15, 0, -15, -40, -5, -30);
			    context.lineTo(0, 0);
			    context.closePath();
			    context.fill();

			    context.beginPath();
			    context.arc(0, 0, 15, 0, Math.PI * 2, true);
			    context.closePath();
			    context.fill();

			    context.restore();

			  }).start();


			  var fox = {
			    x: 50,
			    y: 50
			  };

			  new TWEEN.Tween(rabbit2).to({
			    x: width - 50,
			    y: height - 50
			  }, 3000).onUpdate(function(object) {
			    rabbits.x[2] = object.x;
			    rabbits.y[2] = object.y;
			    // draw fox
			    context.fillStyle = "rgb(0,80,80)";

			    context.save();
			    context.translate(object.x, object.y);

			    context.beginPath();
			    context.moveTo(0, 0);
			    context.bezierCurveTo(15, 0, 15, -40, 5, -30);
			    context.lineTo(0, 0);
			   ...