Cursor.hx 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. class Cursor extends SampleApp {
  2. override function init() {
  3. super.init();
  4. engine.backgroundColor = 0xFF202020;
  5. var bmp = new hxd.BitmapData(32, 32);
  6. bmp.clear(0x80FF0000);
  7. bmp.line(0, 0, 31, 0, 0xFFFFFFFF);
  8. bmp.line(0, 0, 0, 31, 0xFF0000FF);
  9. bmp.line(0, 31, 31, 31, 0xFFFF0000);
  10. bmp.line(31, 0, 31, 31, 0xFF00FF00);
  11. var animationSupported = false;
  12. #if (flash || js || hldx || hlsdl)
  13. animationSupported = true;
  14. #end
  15. var animatedFrames = [bmp];
  16. if (animationSupported)
  17. {
  18. var bmp2 = new hxd.BitmapData(32, 32);
  19. bmp2.clear(0x80800000);
  20. bmp2.line(0, 0, 31, 0, 0xFFFFFFFF);
  21. bmp2.line(0, 0, 0, 31, 0xFF0000FF);
  22. bmp2.line(0, 31, 31, 31, 0xFFFF0000);
  23. bmp2.line(31, 0, 31, 31, 0xFF00FF00);
  24. bmp2.fill(15, 15, 2, 2, 0xFFFF00FF);
  25. animatedFrames.push(bmp2);
  26. }
  27. var cursors : Array<hxd.Cursor> = [Default,Button,Move,TextInput,Hide,Custom(new hxd.Cursor.CustomCursor([bmp],10,16,16)),Custom(new hxd.Cursor.CustomCursor(animatedFrames,10,16,16))];
  28. var pos = 3;
  29. for( c in cursors ) {
  30. var i = new h2d.Interactive(120, 20, s2d);
  31. var tf = new h2d.Text(hxd.res.DefaultFont.get(), i);
  32. tf.text = c.getName();
  33. tf.x = 5;
  34. i.x = 0;
  35. i.y = pos++ * 20;
  36. i.cursor = c;
  37. i.backgroundColor = Std.random(0x1000000) | 0xFF000000;
  38. i.onOver = function(_) tf.alpha = 0.5;
  39. i.onOut = function(_) tf.alpha = 1;
  40. switch(c) {
  41. case Custom(cur):
  42. if (@:privateAccess cur.frames.length > 1) {
  43. tf.text = "Custom (animated)";
  44. if (!animationSupported) {
  45. i.cursor = Default;
  46. tf.textColor = 0xFF0000;
  47. }
  48. }
  49. default:
  50. }
  51. }
  52. // It's possible to override default cursors by custom ones by setting
  53. // `hxd.System.setCursor` function.
  54. // Useful when game utilizes stylized cursors for everything.
  55. var doOverride = false;
  56. var defOverride = new hxd.BitmapData(10, 10);
  57. defOverride.line(0, 0, 5, 0, 0xffff0000);
  58. defOverride.line(0, 1, 0, 5, 0xffff0000);
  59. defOverride.line(0, 0, 10, 10, 0xffff0000);
  60. var overrideCursor:hxd.Cursor = Custom(new hxd.Cursor.CustomCursor([defOverride], 0, 0, 0));
  61. hxd.System.setCursor = function( cur : hxd.Cursor ) {
  62. if (doOverride && cur == Default) {
  63. hxd.System.setNativeCursor(overrideCursor);
  64. } else {
  65. hxd.System.setNativeCursor(cur);
  66. }
  67. }
  68. addText("Override Default cursor by Custom");
  69. addCheck("Enable", function() { return doOverride; }, function(v) { doOverride = v; });
  70. }
  71. static function main() {
  72. new Cursor();
  73. }
  74. }