Bounds.hx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. class Bounds extends hxd.App {
  2. var boxes : Array<h2d.Bitmap>;
  3. var g : h2d.Graphics;
  4. var colors = [0xFF0000 , 0x00FF00 , 0x0000FF, 0xFF00FF];
  5. var time = 0.;
  6. override function init() {
  7. boxes = [];
  8. g = new h2d.Graphics(s2d);
  9. for( i in 0...colors.length ) {
  10. var size = Std.int(200 / (i + 4));
  11. var c = colors[i];
  12. var b = new h2d.Bitmap(h2d.Tile.fromColor(c, size, size, 0.5).sub(0, 0, size, size, -Std.random(size), -Std.random(size)), i == 0 ? s2d : boxes[i - 1]);
  13. b.addChild(new h2d.Bitmap(h2d.Tile.fromColor(0xFFFFFF, 8, 8).sub(0, 0, 8, 8, -4, -4)));
  14. if( i == 0 ) {
  15. b.x = s2d.width * 0.5;
  16. b.y = s2d.height * 0.5;
  17. } else {
  18. b.x = Std.random(50) - 25;
  19. b.y = Std.random(50) - 25;
  20. if( b.x < 0 ) b.x -= size * 1.5 else b.x += size * 1.5;
  21. if( b.y < 0 ) b.y -= size * 1.5 else b.y += size * 1.5;
  22. }
  23. b.scale(1.2 - i * 0.1);
  24. boxes.push(b);
  25. }
  26. for( b in boxes )
  27. new h2d.Graphics(b);
  28. var tf = new h2d.Text(hxd.Res.customFont.toFont(), boxes[0]);
  29. tf.text = "Some quite long rotating text";
  30. tf.x = -5;
  31. tf.y = 15;
  32. tf.smooth = true;
  33. }
  34. override function update(dt:Float) {
  35. time += dt;
  36. g.clear();
  37. for( i in 0...boxes.length ) {
  38. var b = boxes[i];
  39. b.rotate( (i + 1) * dt * 0.06 );
  40. b.setScale(1 + Math.sin(time * 0.1 / (i + 2)) * 0.2);
  41. var b = b.getBounds();
  42. g.beginFill((colors[i]>>2)&0x3F3F3F);
  43. g.drawRect(b.x, b.y, b.width, b.height);
  44. }
  45. for( i in 1...2 ) {
  46. var prev = boxes[i - 1];
  47. var b = boxes[i].getBounds(prev);
  48. var g = hxd.impl.Api.downcast(prev.getChildAt(2), h2d.Graphics);
  49. g.clear();
  50. g.beginFill(0xFFFFFF, 0.5);
  51. g.drawRect(b.x, b.y, b.width, b.height);
  52. }
  53. }
  54. static function main() {
  55. hxd.Res.initEmbed();
  56. new Bounds();
  57. }
  58. }