Index: experimental/SkV8Example/snow.js |
diff --git a/experimental/SkV8Example/snow.js b/experimental/SkV8Example/snow.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..87ce11919856549cc82087a3fa6c16b0a9ad1327 |
--- /dev/null |
+++ b/experimental/SkV8Example/snow.js |
@@ -0,0 +1,92 @@ |
+var IS_SKV8 = typeof document == "undefined"; |
+ |
+function circlePath(r) { |
+ if (IS_SKV8) { |
+ var p = new Path(); |
+ p.oval(0, 0, r, r); |
+ p.closePath(); |
+ return p; |
+ } else { |
+ return null; |
+ } |
+} |
+ |
+var onDraw = function() { |
+ var W = 500; |
+ var H = 500; |
+ var NumParticles = 100; |
+ |
+ var angle = 0; |
+ var ticks = 0; |
+ var particles =[]; |
+ |
+ for (var i = 0; i < NumParticles; i++) { |
+ particles[i] = { |
+ x: Math.floor(Math.random()*W), |
+ y: Math.floor(Math.random()*H), |
+ r: Math.floor(Math.random()*7+1), |
+ path: circlePath(Math.random()*7+1), |
+ } |
+ } |
+ |
+ function draw(ctx) { |
+ ctx.fillStyle = "#ADD8E6"; |
+ ctx.fillRect(0, 0, W-1, H-1); |
+ ctx.fillStyle = "#FFFFFF"; |
+ |
+ angle += 0.0039; |
+ for (var i = 0; i < particles.length; i++) { |
+ var p = particles[i]; |
+ p.x += Math.floor(Math.sin(angle)*5.0); |
+ p.y += 0.6*p.r; |
+ if (p.x > W) { |
+ p.x-=W; |
+ } |
+ if (p.x < 0) { |
+ p.x += W; |
+ } |
+ if(p.y>(H+1)){ |
+ p.y = 0; |
+ } |
+ if (IS_SKV8) { |
+ ctx.save(); |
+ ctx.translate(p.x, p.y); |
+ ctx.fill(p.path); |
+ ctx.restore(); |
+ } else { |
+ ctx.beginPath(); |
+ ctx.moveTo(p.x, p.y); |
+ ctx.arc(p.x, p.y, p.r, 0, 2*Math.PI, true); |
+ ctx.closePath(); |
+ ctx.fill(); |
+ } |
+ }; |
+ |
+ ticks++; |
+ if (IS_SKV8) { |
+ inval(); |
+ } |
+ } |
+ |
+ function fps() { |
+ console.log(ticks); |
+ ticks = 0; |
+ setTimeout(fps, 1000); |
+ } |
+ |
+ setTimeout(fps, 1000); |
+ |
+ return draw; |
+}(); |
+ |
+if (!IS_SKV8) { |
+ window.onload = function(){ |
+ var canvas = document.getElementById("snow"); |
+ var ctx = canvas.getContext("2d"); |
+ function drawCallback() { |
+ onDraw(ctx); |
+ setTimeout(drawCallback, 1); |
+ } |
+ setTimeout(drawCallback, 1); |
+ } |
+} |