我正在开发一个离子3的游戏,我的类名如下:level1,level2,level3等...我正在使用LocalStorage来保存用户达到的级别。
代码如下:
import { level1 } from '../levels/level';
import { level2 } from '../levels/level';
import { level3 } from '../levels/level';
import { Storage } from '@ionic/Storage';
...
storage.get('levelNumber').then((val) => {
if(val == null)
{
this.levelNbr = level1
}
else
{
this.levelNbr = val
}
this.navCtrl.push(this.levelNbr)
//when the class name is retrieved from storage it and placed in val it is then
//assigned to levelNbr, so now levelNbr should contain the class name and
//then pushed in navCtrl.
在LocalStorage中保存关卡的代码如下:
this.storage.set('levelNumber', "level2")
//does not work with navCtrl.push() as "level2" is a string
this.storage.set('levelNumber', level2)
//does not work as it throws cannot clone error
这里的问题是,当我将类名保存为LocalStorage中的字符串时,当我检索它时,它在navCtrl.push
中不起作用,而是它必须是我猜的类类型。并将其保存在LocalStorage中,因为类会引发错误"无法克隆"。
如何动态检查用户在LocalStorage中达到的级别,然后自动推送课程级别?
我想通过简单地做一个切换案例来解决这个问题,但是它不适用于100个级别。
谢谢
答案 0 :(得分:2)
有很多方法可以巧妙地将内容导入到import * as levels from '../levels/level';
之类的变量中,但如果您不想触摸我的导入,我就会
const levels: any = { level1, level2, level3 }; //"any" because I'm lazy.
级别[" level1"]现在将为您提供导入。
我想你的情景会是这样的:
storage.get('levelNumber').then((val) => {
this.levelNbr = levels[val];
...
});
我还没有在这里测试任何东西。使用含有一粒盐的代码。 (对不起,我已经说过我很懒。)