mirror of
https://github.com/konvajs/konva.git
synced 2025-04-05 20:48:28 +08:00
105 lines
2.2 KiB
JavaScript
105 lines
2.2 KiB
JavaScript
var stage;
|
|
var circlesLayer;
|
|
var circles;
|
|
var stats;
|
|
var width = 500;
|
|
var height = 300;
|
|
|
|
var VERSION = Konva.version === 'dev' ? 'new' : 'old';
|
|
|
|
window.requestAnimFrame = (function () {
|
|
return (
|
|
window.requestAnimationFrame ||
|
|
window.webkitRequestAnimationFrame ||
|
|
window.mozRequestAnimationFrame ||
|
|
window.oRequestAnimationFrame ||
|
|
window.msRequestAnimationFrame ||
|
|
function (callback) {
|
|
window.setTimeout(callback, 1000 / 30);
|
|
}
|
|
);
|
|
})();
|
|
|
|
function fpsCounter() {
|
|
//fps stat---------------------------
|
|
stats = new Stats();
|
|
stats.setMode(0);
|
|
stats.domElement.style.position = 'fixed';
|
|
stats.domElement.style.left = '0px';
|
|
stats.domElement.style.top = '0px';
|
|
$('html').append(stats.domElement);
|
|
}
|
|
|
|
$(function () {
|
|
fpsCounter();
|
|
|
|
make_stage();
|
|
|
|
var colors = ['red', 'orange', 'yellow', 'green', 'blue', 'cyan', 'purple'];
|
|
var colorIndex = 0;
|
|
|
|
circles = [];
|
|
for (var n = 0; n < 2500; n++) {
|
|
(function () {
|
|
var color = colors[colorIndex++];
|
|
if (colorIndex >= colors.length) {
|
|
colorIndex = 0;
|
|
}
|
|
|
|
var shape = make_shape(color);
|
|
circlesLayer.add(shape);
|
|
circles.push(shape);
|
|
})();
|
|
}
|
|
|
|
stage.add(circlesLayer);
|
|
animate(new Date().getTime());
|
|
});
|
|
|
|
function animate(lastTime) {
|
|
stats.begin();
|
|
// update
|
|
var date = new Date();
|
|
var time = date.getTime();
|
|
var timeDiff = time - lastTime;
|
|
var period = timeDiff / 1000; //times per second, our period
|
|
|
|
for (var i = 0; i < circles.length; i++) {
|
|
var x = Math.round(Math.random() * width);
|
|
var y = Math.round(Math.random() * height);
|
|
|
|
circles[i].setPosition({ x: x, y: y });
|
|
}
|
|
lastTime = time;
|
|
|
|
circlesLayer.draw();
|
|
stats.end();
|
|
requestAnimFrame(function () {
|
|
animate(lastTime);
|
|
});
|
|
}
|
|
|
|
function make_shape(color) {
|
|
return new Konva.Rect({
|
|
fillLinearGradientStartPoint: { x: -50, y: -50 },
|
|
fillLinearGradientEndPoint: { x: 50, y: 50 },
|
|
fillLinearGradientColorStops: [0, 'black', 1, color],
|
|
// fill: color,
|
|
width: 10,
|
|
height: 10,
|
|
});
|
|
}
|
|
|
|
function make_stage() {
|
|
stage = new Konva.Stage({
|
|
container: 'container',
|
|
width: width,
|
|
height: height,
|
|
});
|
|
|
|
// circlesLayer = new Konva.FastLayer();
|
|
circlesLayer = new Konva.Layer({
|
|
listening: false,
|
|
});
|
|
}
|