| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import { _decorator, Component, error } from "cc";
- import { EventName } from "../EventName";
- import { eventsOnLoad, preloadEvent } from "../Events";
- import ResSprite from "../ResSprite";
- import I18n, { CountryType } from "./I18n";
- const { ccclass, menu, requireComponent } = _decorator;
- @ccclass
- @eventsOnLoad()
- @requireComponent(ResSprite)
- @menu("Framework/I18N/LocalizedSprite")
- export default class LocalizedSprite extends Component {
- private _sprite: ResSprite = null;
- private _imageKey: string = "";
- /** 图片名 */
- public get imageKey(): string { return this._imageKey; }
- public set imageKey(v: string) {
- if (this._imageKey === v) {
- return;
- }
- this._imageKey = v;
- this.updateSprite();
- }
- protected onLoad(): void {
- try {
- I18n.init();
- this._sprite = this.getComponent(ResSprite);
- if (this._sprite.spriteFrame) {
- this.imageKey = this._sprite.spriteFrame.name;
- }
- } catch (err) {
- error(err);
- }
- }
- @preloadEvent(EventName.UPDATE_LOCALIZED_CMPT)
- public updateSprite(): void {
- if (!this.imageKey) {
- return;
- }
- let url = "";
- switch (I18n.curCountry) {
- case CountryType.ZH:
- url = "texture/localizedImage/zh/";
- break;
- case CountryType.JP:
- url = "texture/localizedImage/jp/";
- break;
- case CountryType.DE:
- url = "texture/localizedImage/de/";
- break;
- case CountryType.FR:
- url = "texture/localizedImage/de/";
- break;
- case CountryType.KR:
- url = "texture/localizedImage/kr/";
- break;
- case CountryType.GB:
- url = "texture/localizedImage/gb/";
- break;
- case CountryType.US:
- url = "texture/localizedImage/us/";
- break;
- case CountryType.CA:
- url = "texture/localizedImage/us/";
- break;
- case CountryType.AU:
- url = "texture/localizedImage/us/";
- break;
- default:
- return;
- }
- url += this.imageKey;
- this._sprite.setSpriteFrame(url + "/spriteFrame");
- }
- }
|