2018-07-20 09:58:11 +00:00
|
|
|
import 'dart:html' as html;
|
|
|
|
import 'dart:math' as math;
|
|
|
|
|
|
|
|
html.CanvasRenderingContext2D ctx;
|
|
|
|
html.CanvasElement el;
|
|
|
|
|
|
|
|
math.Random rng = new math.Random();
|
|
|
|
int GRIDNUM = 10;
|
|
|
|
int animID = 0;
|
|
|
|
|
|
|
|
// These are the functions to start the animation and stop the animation.
|
|
|
|
// (They are connected to the start/stop buttons in the demo setup.)
|
|
|
|
var _stop = () => html.window.cancelAnimationFrame(animID);
|
|
|
|
var _start = () => html.window.requestAnimationFrame(eventloop);
|
|
|
|
|
|
|
|
// This is what ticks every frame of the animation.
|
|
|
|
void eventloop(currentTime) {
|
|
|
|
print(currentTime.toString());
|
|
|
|
ctx.setFillColorRgb(rng.nextInt(255), rng.nextInt(255), rng.nextInt(255));
|
|
|
|
int BRICKSIZE = (el.width ~/ GRIDNUM);
|
|
|
|
int x = rng.nextInt(GRIDNUM) * BRICKSIZE;
|
|
|
|
int y = rng.nextInt(GRIDNUM) * BRICKSIZE;
|
|
|
|
ctx.fillRect(x, y, (BRICKSIZE), (BRICKSIZE));
|
|
|
|
|
|
|
|
animID = html.window.requestAnimationFrame(
|
|
|
|
eventloop); // recursive call to our eventloop - calls it forever as soon as browser is willing to give us his time
|
|
|
|
}
|
|
|
|
|
|
|
|
void main() {
|
|
|
|
_demoSetup();
|
|
|
|
}
|
|
|
|
|
|
|
|
//buttons and canvas setup
|
|
|
|
void _demoSetup() {
|
|
|
|
el = new html.CanvasElement(width: 480, height: 480);
|
|
|
|
html.querySelector('#basic_output').append(el);
|
|
|
|
ctx = el.getContext('2d');
|
|
|
|
var _clear = () {
|
|
|
|
_stop();
|
|
|
|
ctx.setFillColorRgb(rng.nextInt(255), rng.nextInt(255), rng.nextInt(255));
|
|
|
|
ctx.fillRect(0, 0, el.width, el.height);
|
|
|
|
ctx.setFillColorRgb(rng.nextInt(255), rng.nextInt(255), rng.nextInt(255));
|
|
|
|
};
|
|
|
|
var _changeGrid = (int delta) {
|
2018-07-24 11:35:25 +00:00
|
|
|
_clear();
|
|
|
|
int newgrid = GRIDNUM + delta;
|
|
|
|
GRIDNUM = (newgrid == 0) ? GRIDNUM : newgrid;
|
|
|
|
_start();
|
2018-07-20 09:58:11 +00:00
|
|
|
};
|
|
|
|
_clear();
|
|
|
|
|
|
|
|
html.querySelector('#basic_start').onClick.listen((e) {
|
|
|
|
print('started');
|
|
|
|
_stop();
|
|
|
|
_start();
|
|
|
|
});
|
|
|
|
html.querySelector('#basic_stop').onClick.listen((e) => _stop());
|
2018-07-24 11:35:25 +00:00
|
|
|
html.querySelector('#basic_reset').onClick.listen((e) => _clear());
|
2018-07-20 09:58:11 +00:00
|
|
|
html.querySelector('#basic_plus').onClick.listen((e) => _changeGrid(-5));
|
|
|
|
html.querySelector('#basic_minus').onClick.listen((e) => _changeGrid(5));
|
|
|
|
}
|