OLD | NEW |
1 <!-- | 1 <!-- |
2 Copyright (c) 2012 Cameron Adams. All rights reserved. | 2 Copyright (c) 2012 Cameron Adams. All rights reserved. |
3 Copyright (c) 2012 Code Aurora Forum. All rights reserved. | 3 Copyright (c) 2012 Code Aurora Forum. All rights reserved. |
4 Copyright (C) 2013 Google Inc. All rights reserved. | 4 Copyright (C) 2013 Google Inc. All rights reserved. |
5 | 5 |
6 Redistribution and use in source and binary forms, with or without | 6 Redistribution and use in source and binary forms, with or without |
7 modification, are permitted provided that the following conditions are | 7 modification, are permitted provided that the following conditions are |
8 met: | 8 met: |
9 * Redistributions of source code must retain the above copyright | 9 * Redistributions of source code must retain the above copyright |
10 notice, this list of conditions and the following disclaimer. | 10 notice, this list of conditions and the following disclaimer. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 var particles = []; | 70 var particles = []; |
71 var allParticleKeyframes = []; | 71 var allParticleKeyframes = []; |
72 | 72 |
73 window.onload = function () { | 73 window.onload = function () { |
74 PerfTestRunner.prepareToMeasureValuesAsync({done: onCompletedRun, unit: 'fps
'}); | 74 PerfTestRunner.prepareToMeasureValuesAsync({done: onCompletedRun, unit: 'fps
'}); |
75 | 75 |
76 // Create the particles | 76 // Create the particles |
77 for (var i = 0; i < maxParticles; i++) { | 77 for (var i = 0; i < maxParticles; i++) { |
78 generateParticleKeyframes(i); | 78 generateParticleKeyframes(i); |
79 var particle = new Particle(i); | 79 var particle = new Particle(i); |
| 80 particle.start(); |
80 particles.push(particle); | 81 particles.push(particle); |
81 } | 82 } |
82 for (var i = 0; i < maxParticles; i++) | |
83 particles[i].start(); | |
84 | 83 |
85 startTrackingFrameRate(); | 84 startTrackingFrameRate(); |
86 } | 85 } |
87 | 86 |
88 function generateParticleKeyframes(index) { | 87 function generateParticleKeyframes(index) { |
89 allParticleKeyframes[index] = []; | 88 allParticleKeyframes[index] = []; |
90 | 89 |
91 var angle = Math.PI * 2 * PerfTestRunner.random(); | 90 var angle = Math.PI * 2 * PerfTestRunner.random(); |
92 var velocity = minVelocity + ((maxVelocity - minVelocity) * PerfTestRunner.r
andom()); | 91 var velocity = minVelocity + ((maxVelocity - minVelocity) * PerfTestRunner.r
andom()); |
93 var x = stageWidth / 2 - particleRadius; | 92 var x = stageWidth / 2 - particleRadius; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 y += dy * dt; | 125 y += dy * dt; |
127 } else { | 126 } else { |
128 t += collision.dt; | 127 t += collision.dt; |
129 x = collision.x; | 128 x = collision.x; |
130 y = collision.y; | 129 y = collision.y; |
131 dx = collision.dx; | 130 dx = collision.dx; |
132 dy = collision.dy; | 131 dy = collision.dy; |
133 } | 132 } |
134 allParticleKeyframes[index].push(generateKeyframe(t, x, y)); | 133 allParticleKeyframes[index].push(generateKeyframe(t, x, y)); |
135 } | 134 } |
136 | |
137 return keyframes; | |
138 } | 135 } |
139 | 136 |
140 function generateKeyframe(t, x, y) { | 137 function generateKeyframe(t, x, y) { |
141 return {left: x + "px", top: y + "px", offset: t / animationDuration }; | 138 return {left: x + "px", top: y + "px", offset: t / animationDuration }; |
142 } | 139 } |
143 | 140 |
144 function Particle(index) | 141 function Particle(index) |
145 { | 142 { |
146 // Create visual element for the particle. | 143 // Create visual element for the particle. |
147 var domNode = document.createElement('span'); | 144 var domNode = document.createElement('span'); |
148 document.body.appendChild(domNode); | 145 document.body.appendChild(domNode); |
149 | 146 |
150 // Set colour of element. | 147 // Set colour of element. |
151 domNode.style.backgroundColor = colors[Math.floor(Math.random() * colors.len
gth)]; | 148 domNode.style.backgroundColor = colors[Math.floor(Math.random() * colors.len
gth)]; |
152 | 149 |
153 function start() { | 150 function start() { |
154 var player = domNode.animate(allParticleKeyframes[index], {easing: "line
ar", iterations: Infinity, direction: "alternate", duration: animationDuration})
; | 151 var player = domNode.animate(allParticleKeyframes[index], {easing: "line
ar", iterations: Infinity, direction: "alternate", duration: animationDuration *
1000}); |
155 } | 152 } |
156 | 153 |
157 function destroy() | 154 function destroy() |
158 { | 155 { |
159 document.body.removeChild(domNode); | 156 document.body.removeChild(domNode); |
160 } | 157 } |
161 | 158 |
162 this.start = start; | 159 this.start = start; |
163 this.destroy = destroy; | 160 this.destroy = destroy; |
164 } | 161 } |
165 | 162 |
166 function onCompletedRun() { | 163 function onCompletedRun() { |
167 testRunning = false; | 164 testRunning = false; |
168 stopTrackingFrameRate(); | 165 stopTrackingFrameRate(); |
169 | 166 |
170 for (var i = 0; i < particles.length; i++) | 167 for (var i = 0; i < particles.length; i++) |
171 particles[i].destroy(); | 168 particles[i].destroy(); |
172 particles = []; | 169 particles = []; |
173 } | 170 } |
174 </script> | 171 </script> |
175 <style id="keyframes"></style> | 172 <style id="keyframes"></style> |
176 </head> | 173 </head> |
177 </html> | 174 </html> |
OLD | NEW |