Egret社区
本帖最后由 老黄 于 2021-2-28 15:45 编辑

首先是在代码中定义了一个原始的数组,名称为:abc。
public static abc[]=
[
        {name: “粮食 ,number:100},
        {name: “金钱” ,number:100},
        {name: “木材” ,number:100},
        {name: “石材” ,number:100},
]

然后定义了一个映射。

public static xyz=
                {
                “粮食”:dataManager.abc[0],//
                “金钱”:dataManager.abc[1],
                “木材”:dataManager.abc[2],
                “石材”:dataManager.abc[3],
                }

在游戏中用函数,使用映射的方式(例如:用“粮食”来映射DataManager.abc[0]),对数组元素进行处理后。存档。
egret.localStorage.setItem('cailiao', JSON.stringify(DataManager.abc))//材料存档

然后重启游戏,在mian中,读取存档。
DataManager.abc = JSON.parse(<string>egret.localStorage.getItem('cailiao'));

这种情况下,如果直接以数组的名称来进行操作和打印,那么是正常的
DataManager.abc[0]=DataManager.abc[0]-10
console.log(DataManager.abc[0])


但是,在函数中而以映射的方式来操作用“粮食”来映射DataManager.abc[0],并进行处理,那么就是在操作在代码中定义原始定义的数组元素,而不是读档以后的DataManager.abc数组。
public static abc[]=
[
        {name: “粮食 ,number:100},
        {name: “金钱” ,number:100},
        {name: “木材” ,number:100},
        {name: “石材” ,number:100},
]
通过映射操作,就会操作上面这个在代码中定义的原始数组数据,而不是读取存档以后的DataManager.abc数组了。
因为游戏功能需求,只能映射了名字后,取得对应的数据进行处理。

这样就没有办法正常的使用存档功能了,请教一下各位大佬该怎么处理呢?

分享到 :
0 人收藏

2 个回复

倒序浏览
app小王子  社区管理员 | 2021-3-1 15:04:56
建议你贴个代码上来 看你的描述 没看明白 你具体是怎么操作的
老黄  登堂入室 | 2021-3-1 22:45:43
已经解决了。
简单的说就是读档以后,唰新一下映射就可以了,就不会映射到最开始定义的原始数组了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部