萌新求助贴

我想用随机生成的一个数去一个数组里取对应的图片怎么弄,我逻辑有点混乱,需要加if判断之类的吗

math.floor(math.random().arr.length)即可,但是我有个疑问,为啥把图片放在数组里?直接通过图片名加载不是更方便吗?

这样吗,但是length要报错

试试这个:
let randomIndex = Math.floor(Math.ramdom()*page.length -1);
let spriteFrame = page[randomIndex];
然后spriteFrame就可以用来赋值了。

报错的原因是:Math.ramdom() 和 page.length -1之间应该是乘号。
Math.random() 返回的是0~1之间的浮点数(0.5,0.43…),page.length -1 在这里是最大值,也就是上限,其实这种写法是默认了随机0~最大值之间的浮点数;而Math.floor()是向下取整,也就是说:假如你对3.1向下取整,let number = Math.floor(3.1);number是等于3的,永远不会大于数字的整数部分。
page.length -1 的原因是,数组的索引是从0开始的,不减1会报索引越界,打个比方是,假如数组SS中有两个精灵,他们的索引分别就是0和1,SS[0]是第一个元素,SS[1]是第二个元素,随机的就是0和1这个索引,如果直接拿长度(2)来随机,有可能返回2,然后你拿2这个索引去取元素,SS[2]是不存在的。

抱歉哦,我把乘号打成了点号,楼下那位说的很清楚,你可以参考下

补充一下,随机数的取值范围是[0,1)所以使用数组长度是没问题的,不需要减1,这里给个公式吧。
取min至max之间的随机数,包含min和max,则:
let random = Math.floor(Math.random()*(max - min + 1)) + min

非常感谢