Loop.hx 601 B

1234567891011121314151617181920212223242526272829303132333435
  1. package dx;
  2. class Loop {
  3. static function eventLoop( e : Event ) {
  4. for( w in @:privateAccess Window.windows )
  5. if( w.getNextEvent(e) )
  6. return true;
  7. return false;
  8. }
  9. static var event = new Event();
  10. public static function processEvents( onEvent : Event -> Bool ) {
  11. while( true ) {
  12. switch( hl.UI.loop(false) ) {
  13. case NoMessage:
  14. break;
  15. case HandledMessage:
  16. continue;
  17. case Quit:
  18. return false;
  19. }
  20. }
  21. while( true ) {
  22. if( !eventLoop(event) )
  23. break;
  24. var ret = onEvent(event);
  25. if( event.type == Quit && ret )
  26. return false;
  27. }
  28. return true;
  29. }
  30. }