LocalizedSprite.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import * as i18n from './LanguageData';
  2. import { _decorator, Component, SpriteFrame, Sprite } from 'cc';
  3. const { ccclass, property, executeInEditMode } = _decorator;
  4. @ccclass('LocalizedSpriteItem')
  5. class LocalizedSpriteItem {
  6. @property
  7. language: string = 'zh';
  8. @property({
  9. type: SpriteFrame,
  10. })
  11. spriteFrame: SpriteFrame | null = null;
  12. }
  13. @ccclass('LocalizedSprite')
  14. @executeInEditMode
  15. export class LocalizedSprite extends Component {
  16. sprite: Sprite | null = null;
  17. @property({
  18. type: LocalizedSpriteItem,
  19. })
  20. spriteList = [];
  21. onLoad() {
  22. if (!i18n.ready) {
  23. i18n.init('zh');
  24. }
  25. this.fetchRender();
  26. }
  27. fetchRender () {
  28. let sprite = this.getComponent('cc.Sprite') as Sprite;
  29. if (sprite) {
  30. this.sprite = sprite;
  31. this.updateSprite();
  32. return;
  33. }
  34. }
  35. updateSprite () {
  36. for (let i = 0; i < this.spriteList.length; i++) {
  37. const item = this.spriteList[i];
  38. // @ts-ignore
  39. if (item.language === i18n._language) {
  40. // @ts-ignore
  41. this.sprite.spriteFrame = item.spriteFrame;
  42. break;
  43. }
  44. }
  45. }
  46. }