Controlling while loops in Dart -


i stuck trying simple. want able count upwards until click on screen @ point want counting stop. in reality code carrying out complex ai calculations game, first want understand how control while loop. in android trivial.

here code looks like

bool ok = true;  main() async{  html.queryselector('#content').onmouseup.listen((e){    ok = false;  });   await for(int in naturals){    print(i);    await sleep();  } }  stream naturals async* {  int k = 0; while (ok) { yield await k++; } }  future sleep() {  return new future.delayed(const duration(milliseconds: 1), () => "1"); } 

i put sleep() method in way ensure control passed event loop.

is possible control while loop without sleep() method?

to provide more general answer - instead of loop, want schedule sequence of future tasks each executes 1 iteration or step of ai code (or whatever background process want have running).

you can have step task recursively schedule itself:

dynamic dosomething(_) {   print('doing ...');    if(!stop) {     new future.delayed(delay, (){}).then(dosomething);   }   return null; }  main() async {    dosomething(null);  } 

although don't recommend doing this. it's awkward control - step code has check flag variable see if should continue or stop , it's free running.

alternatively use timer:

void dosomething(timer timer) {   print('doing ...');   }  main() async {   new timer.periodic(delay, dosomething);  } 

this throttled @ constant rate , has uniform time step, , easier stop (call cancel() on timer).

another approach might synchronize browser's draw refresh cycle requesting future animation frames:

import 'dart:html';  dosomething(num delta) {   print('doing ...');     window.animationframe.then(dosomething); }  void main() {   window.animationframe.then(dosomething); } 

time steps not constant time delta. advantage of approach animation frame futures not scheduled if browser window hidden.

see how drive animation loop @ 60fps dart?

those simple examples. setting proper background processes physics simulation , ai in web games surprisingly (to me @ least) non-trivial. here 2 resources found helpful.

http://gameprogrammingpatterns.com/ - nice free online book of game programming patterns. http://gameprogrammingpatterns.com/game-loop.html - chapter on game loops.

http://gafferongames.com/game-physics/fix-your-timestep/ - part of sequence of articles on physics simulation in games.


Comments

Popular posts from this blog

Django REST Framework perform_create: You cannot call `.save()` after accessing `serializer.data` -

Why does Go error when trying to marshal this JSON? -