Alexander Deplov

Lightsaber

Lightsaber

Code

var bg = new Path.Rectangle({
    size: view.size,
    fillColor: 'black'
})

var max = 10 * 2
var radiusOfRedCircles = 20
var radiusOfCursorCircles = 10/2
var distanceFromCenter = 40

var array = []
var group = new Group()
for (var i = 0; i < max; i++){
	var circle = new Path.Circle({
		radius: 20 * i,
		strokeColor: 'red',
		strokeWidth: 0.1,
		canter: view.center,
		parent: group
	})

	array.push(circle)
}
group.position = view.center

function onMouseMove(event){
group.position.x += (Math.sin(event.count * 0.05) * 20) * 0.3

	group.position = event.point
	group.rotate(-5, event.point)

	pointerGroup.rotate(2, view.center)

	array.map(function(object, i){
		var circleCloser = new Path.Circle({
			radius: radiusOfCursorCircles,
			fillColor: 'blue',
			position: view.center,
			applyMatrix: false
		})
		circleCloser.fillColor.hue += 20 * i

		circleCloser.tweenTo(
		{ 'scaling': 2,
		'fillColor.hue': 40},
		{
		    duration: 200,
		    easing: 'easeInCubic'
		})

		var nearestPoint = object.getNearestPoint(pointerGroup.position);
		circleCloser.position = nearestPoint;
		circleCloser.onFrame = function(event){
			this.fillColor.hue += 7
			circleCloser.fillColor.hue += 10
		}

		

		setTimeout(function(){
			circleCloser.remove()
		}, 400)

})
}
function onFrame(event){
	

}

var pointerGroup = new Group()
var pointer = new Path.Circle({
	radius: 5,
	fillColor: 'yellow',
	center: view.center,
	parent: pointerGroup,
	opacity: 0.2
})
pointerGroup.position.x += 200