Creator 切换语言升级版
之前写过一版切换图片语言的国际化,但是需要通过刷新页面来完成,由于facebook messager不支持刷新页面重载游戏,所以升级如下:
流程为 切换语言 -> 切换到Loading场景重载语言 -> 进入主页面
Loading场景
目前只实现了两个语言的切换,自行扩展即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| let enUrl = "texture/Language_EN"; let zhUrl = "texture/Language_ZH"; let useMap = false; // 是否使用缓存的Map资源 if(!this._mAtlasMap) { this._mAtlasMap = {"en":{},"zh":{}}; // 用于缓存加载到的资源 }else{ useMap = true; } cc.loader.loadRes(enUrl, cc.SpriteAtlas, (err, enAsset) => { cc.loader.loadRes(zhUrl, cc.SpriteAtlas, (err, zhAsset) => { for (let key in enAsset._spriteFrames) { let enSF = enAsset._spriteFrames[key]; let zhSF = zhAsset._spriteFrames[key]; if(!useMap){ this._mAtlasMap["en"][key] = {}; this._mAtlasMap["zh"][key] = {}; } for (let i in enSF) { if(!useMap){ if(this.language == "zh"){ this._mAtlasMap["en"][key][i] = enSF[i]; this._mAtlasMap["zh"][key][i] = zhSF[i]; }else{ this._mAtlasMap["zh"][key][i] = enSF[i]; this._mAtlasMap["en"][key][i] = zhSF[i]; } } if(i == "_originalSize"){ enSF[i] = this._mAtlasMap["en"][key]["_originalSize"]; }else if (!(enSF[i] instanceof Function) && i != "isValid" && i != "nativeUrl" && i != "_uuid") { enSF[i] = this._mAtlasMap[this.language][key][i]; } } } // 切换到主界面 ... }); });
|