Locator.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. var t = require;
  2. var e = module;
  3. var i = exports;
  4. var r,
  5. e =
  6. (this && this.__decorate) ||
  7. function (t, e, i, s) {
  8. var o,
  9. a = arguments.length,
  10. n = a < 3 ? e : null === s ? (s = Object.getOwnPropertyDescriptor(e, i)) : s;
  11. if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) n = Reflect.decorate(t, e, i, s);
  12. else
  13. for (var r = t.length - 1; 0 <= r; r--)
  14. (o = t[r]) && (n = (a < 3 ? o(n) : 3 < a ? o(e, i, n) : o(e, i)) || n);
  15. return 3 < a && n && Object.defineProperty(e, i, n), n;
  16. };
  17. Object.defineProperty(i, "__esModule", {value: !0}), (i.Locator = void 0);
  18. const l = t("App"),
  19. {ccclass: s} = cc._decorator;
  20. t = r = class {
  21. static parse(i) {
  22. cc.assert(i, "locator string is null");
  23. let t = i.split(/[.,//,>,#]/g),
  24. s = 0;
  25. return t.map(function (t) {
  26. var e = i[s - 1] || ">";
  27. return (s += t.length + 1), {symbol: e, name: t.trim()};
  28. });
  29. }
  30. static seekNodeByName(t, e) {
  31. if (!t) return null;
  32. if (t.name == e) return t;
  33. var i = t.children,
  34. s = i.length;
  35. for (let t = 0; t < s; t++) {
  36. var o = i[t],
  37. o = this.seekNodeByName(o, e);
  38. if (null != o) return o;
  39. }
  40. return null;
  41. }
  42. static locateNode(t, e, i) {
  43. r.locating || ((this.startTime = Date.now()), (this.locating = !0));
  44. var s = r.parse(e);
  45. cc.assert(s && s.length);
  46. let o,
  47. a = t;
  48. for (let t = 0; t < s.length; t++) {
  49. var n = s[t];
  50. switch (n.symbol) {
  51. case "/":
  52. o = a.getChildByName(n.name);
  53. break;
  54. case ".":
  55. o = a[n.name];
  56. break;
  57. case ">":
  58. o = this.seekNodeByName(a, n.name);
  59. }
  60. if (!o) {
  61. a = null;
  62. break;
  63. }
  64. a = o;
  65. }
  66. return (
  67. a && a.active && i
  68. ? ((this.locating = !1),
  69. l.default.TimerManager.setFrameOut(
  70. 1,
  71. () => {
  72. i(null, a);
  73. },
  74. this
  75. ))
  76. : i &&
  77. (Date.now() - this.startTime > this.timeout
  78. ? ((this.locating = !1), i({error: "timeout", locator: e}))
  79. : l.default.TimerManager.setTimeOut(
  80. 100,
  81. () => {
  82. this.locateNode(t, e, i);
  83. },
  84. this
  85. )),
  86. a
  87. );
  88. }
  89. static locateNodeSync(t, e) {
  90. return new Promise(i => {
  91. this.locateNode(t, e, (t, e) => {
  92. i({error: t, node: e});
  93. });
  94. });
  95. }
  96. static getNodeFullPath(t) {
  97. let e = [],
  98. i = t;
  99. for (; "GameScene" !== i.name && e.unshift(i.name), (i = i.parent), i && "Canvas" !== i.name; );
  100. return e.join("/");
  101. }
  102. };
  103. (t.timeout = 8e3), (t = r = e([s], t)), (i.Locator = t = r);