JohnMunsch/PaperQuik

View on GitHub
app/bower_components/paper/examples/Node.js/AnimatedStar.js

Summary

Maintainability
A
3 hrs
Test Coverage
var paper = require('paper');
paper.setup(new paper.Canvas(1024, 768));

var layer = paper.project.activeLayer;

var values = {
    count: 34,
    points: 32
};

initialize();

paper.view.exportFrames({
    amount: 100,
    directory: __dirname,
    onComplete: function() {
        console.log('Done exporting.');
    },
    onProgress: function(event) {
        console.log(event.percentage + '% complete, frame took: ' + event.delta);
    }
});

function initialize() {
    for (var i = 0; i < values.count; i++) {
        var offset = new paper.Point(20 + 10 * i, 0);
        var path = new paper.Path();
        path.fillColor = i % 2 ? 'red' : 'black';
        path.closed = true;

        var l = offset.length;
        for (var j = 0; j < values.points * 2; j++) {
            offset.angle += 360 / values.points;
            var vector = offset.normalize(l * (j % 2 ? 0.1 : -0.1));
            path.add(offset.add(vector));
        }
        path.smooth();
        layer.insertChild(0, path);
    }
    layer.fitBounds(paper.view.bounds);
}

paper.view.onFrame = function(event) {
    for (var i = 0, l = layer.children.length; i < l; i++) {
        var item = layer.children[i];
        var angle = (values.count - i) * Math.sin(event.count / 128) / 10;
        item.rotate(angle);
    }
}