对于1:方法算是挺多的,但是复杂程度有高有低,我想到的主要有两种方法 ①(因为需要掌握数组组件,相对较难)通过数组+随机数来生成一组次序被打乱的序号组,根据这个打乱后的序号组,在格子上依次生成对应编号的拼图块。 ②(相对简单,但是比较繁琐)把拼图块和格子在舞台上摆好,拼图块先摆在屏幕外,格子用实例笔刷刷好, 然后对每一个格子实例,在“不在屏幕内的拼图块”中随机一个实例,把随机到的拼图块位置设置到当前的格子实例上去。 效果预览(可以看到两次的随机结果是不一样的): 对于2:这个会涉及两个图块的选中,方法也是挺多的,比较直观的是比较位置,选中第一个图块后,用变量记录下第一个图块的位置,然后选中第二个图块时,也是如此,之后判断它和之前的图块的位置差异([两者x相同,两者y的差值为一个纵向的格子间隔距离],[两者y相同,两者x的差值为一个横向的格子间隔距离],这些情况只要满足其一即表示为相邻),然后彼此设置位置为对方的位置,即完成交换。不过这个免不了要理解“实例选择”的机制,这里只提供思路。 对于3:判断拼图是否已完成,其实就是完成“判断所有的图块是否都已在对应格子”这件事,给拼图块和格子一个相对应的编号(例如20个格子,它们的编号分别是1,2,3……,正确的拼图块排序也是这样,编号分别为1,2,3……),先把计数用的变量设置为0,对于每一拼图块,当它的编号与重叠中的格子的编号相同时,计数用变量的值+1,最后计数用变量的值跟格子数量相同时,表示都摆放正确,则拼图已完成。官方的模板里好像也有一个拼图模板,你也可以看看里面是怎么判断拼图已完成的。