sprite.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. const { template, $, update, close } = require('./base');
  2. exports.template = template;
  3. exports.$ = $;
  4. exports.update = update;
  5. exports.close = close;
  6. const { setHidden, setReadonly, isMultipleInvalid } = require('../utils/prop');
  7. // query the dom node by type
  8. function findDomByType(parentElement, type) {
  9. for (const child of parentElement.children) {
  10. if (child.dump.type === type) {
  11. return child;
  12. }
  13. }
  14. return null;
  15. }
  16. exports.ready = function() {
  17. this.elements = {
  18. fillType: {
  19. update(element, dump) {
  20. setHidden(isMultipleInvalid(dump.type) || dump.type.value !== 3, element);
  21. },
  22. },
  23. fillCenter: {
  24. update(element, dump) {
  25. this.elements.fillType.update.call(this, element, dump);
  26. setReadonly(dump.fillType.value !== 2, element);
  27. },
  28. },
  29. fillStart: {
  30. update(element, dump) {
  31. this.elements.fillType.update.call(this, element, dump);
  32. },
  33. },
  34. fillRange: {
  35. update(element, dump) {
  36. this.elements.fillType.update.call(this, element, dump);
  37. },
  38. },
  39. spriteFrame: {
  40. updateAtlas(spriteFrameUuid, parentElement) {
  41. if (!spriteFrameUuid || !parentElement) { return; }
  42. Editor.Message.request('asset-db', 'query-asset-meta', spriteFrameUuid)
  43. .then(async (spriteFrameMeta) => {
  44. if (!spriteFrameMeta || !spriteFrameMeta.userData) { return; }
  45. const spriteAtlasDom = findDomByType(parentElement, 'cc.SpriteAtlas');
  46. if (!spriteAtlasDom) { return; }
  47. spriteAtlasDom.value = spriteFrameMeta.userData.atlasUuid;
  48. spriteAtlasDom.dispatch('change');
  49. spriteAtlasDom.dispatch('confirm');
  50. })
  51. .catch((err) => {
  52. console.error(err);
  53. });
  54. },
  55. ready(element, dump) {
  56. element.addEventListener('change-dump', (event) => {
  57. const spriteFrameDump = event.target.dump;
  58. const spriteFrameUuid = spriteFrameDump.value.uuid;
  59. if (!spriteFrameUuid) { return; }
  60. this.elements.spriteFrame.updateAtlas(spriteFrameUuid, event.target.parentElement);
  61. });
  62. },
  63. },
  64. };
  65. };