怎么记录坐标值不会溢出

  • Creator 版本: 3.8

  • 目标平台:谷歌浏览器

  • 重现方式:新建一个数组,在touchmove的时候,将坐标保存在数组里面,记录并保存到本地,方便下次进入的时候读取,当数组长度超过700或者900的时候,就会报错。

  • 首个报错: Array buffer allocation failed

有没有其他方法可以处理一下,1000的长度还是有点不够的

  • 之前哪个版本是正常的:
  • 手机型号:
  • 手机浏览器:
  • 编辑器操作系统:
  • 重现概率:

优化数据大小,你应该存的Vec3类型的数据,改成只存xyz三个number,取出来重新创建vec3对象,然后浮点数精度优化一下

这样的话,数组的长度只能再增加个二三百,就还是会报错

用 link 记录

用 map 理论上无限 性能还好

把小数部分去掉

代码咋写啊 我只知道map是个键值对

能给个简单的小代码看看吗,没听过link

把Map.size作为Map的key。

链表 - OI Wiki (oi-wiki.org)

字符串保存用的时候转

数组上千 就出错了? 有怎么脆弱吗

谁知道呢 我坐标从 new vec3(111,111,0),改成"111,111,0"也没什么太大改善
map的话也就是多了400左右,也蹦了,只能曲线救国了

创建数组的时候就预先分配一个足够大的空间呢?我感觉你像在不断push?

对 move每次变动我都会保存在数组里面,怎么预先分配啊

我觉得可以试一下,不过我用的是2.4更多emm

let posArr = new Array<Vec3>(100000);
let posArrIdx = 0;

posArr[posArrIdx++] = cc.v3(pos);

感谢 我去试试