数组

什么是数组?

基本上,我们可以理解数组是有序的单元格列表,每个单元格中包含一个值(可以是数字,文本),数组可以是一维数组,二维数组,三维数组,也叫做x,y,z维度,也叫做宽度,高度,深度。

一维数组

[1]首先我们先来创建一个动物的数组,在组件添加栏点击按钮展开更多组件点击数组,在抽象对象库就会新建一个数组,在对象库数组1上右键重命名为动物.

在对象库选中数组,在右方属性栏看一下数组的基本属性.默认的数组宽度是10,高度是1,深度是1.我们只需要在数组中存储5只动物,所以我们把宽度更改为5.

默认情况下,数组中一开始所有的元素都为0,我们可以理解我们这个初始的数组如下图所示.

数组中单元格的位置称为索引。索引从0开始,因此第一个单元格的索引为0,最后一个单元格为宽度-1,在此示例中为4。

对数组设置值

[2]让我们在数组中设置值,首先在事件表中添加一条新的事件,设置第一个单元格的值设置为”猫”.条件设置”系统-场景开始时”,动作设置”动物(数组)-依据X设置值”

然后再设置第5个单元格的值为”狗”.

那么通过事件设置之后,一维数组就如下图所示.

然后我们可以预览一下,在预览窗口中,我们可以在下方调试器中选择数组,就可以查看到数组现在的数据.

我们继续设置数组的值,将其他空的值都设置上.

获取数组中的值

[3] 如果需要从数组中获取某个单元格值,我们可以用到这个表达式:数组名.at(索引).
我们在舞台中添加一个文本和一个按钮.点击按钮时,将文本设置为数组中第一个单元格的值.设置事件如下图所示.

我们预览一下,当我们点击按钮时,文本就会改变为数组中第一个单元格的值.

如果我们知道数组中某个值并想知道它在数组中的位置(索引),我们可以用到这个表达式:数组名.index(值).动物.indexOf(“狗”).如下图所示设置事件,预览时点击按钮,文本值就改变为”狗”在数组中的位置(索引).

如果我们想获取数组中狗之前的单元格的位置的动物是什么我们可以使用组合表达式来获取,动物.at(动物.indexof(“狗”)-1).

这个事件我们预览一下,点击按钮,文本值就改变为兔子.获取到狗单元格之前单元格的值了.

循环数组

数组有两个两个条件,”比较当前值”和”对于每个元素”,使用条件会逐个单元格循环遍历并且检查每个单元格的值,使用循环数组条件时,我们可以使用以下的表达式来获取对应的值.
数组名.CurValue 获取遍历循环中,数组当前的值
数组名.Curx 获取遍历循环中,当前值的X轴编号
数组名.Cury 获取遍历循环中,当前值的Y轴编号
数组名.Curz 获取遍历循环中,当前值的Z轴编号

[4]我们来遍历一下动物数组,通过文本”添加文本”动作,将文本值改变为数组中所有的值.

[4.1]我们也可以循环遍历数组,在任何单元格值为猫的值,更改为狮子.在舞台下新建一个按钮,命名为更改.设置事件如下图所示.

这时候我们预览一下,当我们点击更改按钮时,由于我们更改了数组的值,之前设置的每帧执行显示数组所有值的事件就会让文本值改变为最新的数组的值.

操作数组

在前面我们了解了如何更改数组中的值,接下来学习对数组进行插入,删除,排序等操作.

[5]使用插入动作,在老鼠单元格之前插入一个新的单元格值为牛.在舞台新建一个按钮,命名为插入.设置事件如下图所示.

这时候我们预览一下,当我们点击插入按钮时,由于我们插入数组的值,之前设置的每帧执行显示数组所有值的事件就会让文本值改变为最新的数组的值.可以看到插入的新单元格将数组的宽度增加到6.

[6]通过删除动作,将大象从数组中删除.在舞台新建一个按钮,命名为删除.设置事件如下图所示.

这时候我们预览一下,当我们点击删除按钮时,由于我们删除数组的值,之前设置的每帧执行显示数组所有值的事件就会让文本值改变为最新的数组的值.可以看到删除数组的组宽度减少到4.

[7]通过添加动作,可以在数组头部或者尾部添加新的单元格.我们通过添加动作将老虎添加到数组的头部.在舞台新建一个按钮,命名为添加.设置事件如下图所示.

这时候我们预览一下,当我们点击添加按钮时,由于我们插入数组的值,之前设置的每帧执行显示数组所有值的事件就会让文本值改变为最新的数组的值.可以看到在数组的头部添加了新的单元格数值为老虎,数组的宽度增加到6.

[8]通过从头部或尾部删除动作,可以从数组的头部或者尾部删除一个元素.我们通过从头部或尾部删除动作,删除数组中最后一个单元格.在舞台新建一个按钮,命名为从尾部删除.设置事件如下图所示.

这时候我们预览一下,当我们点击从尾部删除按钮时,由于我们删除数组最后一个单元格,之前设置的每帧执行显示数组所有值的事件就会让文本值改变为最新的数组的值.可以看到删除了数组中最后一个单元格,数组的宽度减少到4.

[9]通过排序动作,可以将数组按数字大小或文本第一个字母排序(根据单元格的值)进行排序.我们通过从排序动作,将数组按正序排序.在舞台新建一个按钮,命名为排序.设置事件如下图所示.

这时候我们预览一下,当我们点击排序按钮时,由于我们更改了数组的排序,之前设置的每帧执行显示数组所有值的事件就会让文本值改变为最新的数组的值.可以看到数组中的数组中的单元格按照新的规律排序.

[10]逆序排序,将当前数组进行逆序排序.在舞台新建一个按钮,命名为逆序排序.设置事件如下图所示.

这时候我们预览一下,当我们点击排序逆序按钮时,由于我们更改了数组的排序,之前设置的每帧执行显示数组所有值的事件就会让文本值改变为最新的数组的值.可以看到数组中的数组中的单元格按照新的规律排序.

二维数组

二维数组具有宽度和高度,如下图所示一个5*5的二维数组.

二维数组通过X,Y轴两个索引来确定数组单元格位置.如上图所示.跟一维数组使用同样的方式来获取数组单元格中的值:数组名.at(索引x,所以y),但需要增加索引y的值来确认需要获取指定单元格的值,如数组.at(0,0)即获取索引x为0和索引y为0单元格的值即为1.

例子: 数组.at(1,1)=7 数组.at(3,4)=20 数组.at(2,3)=14

二维数组的用法

二维数组有非常多的用途,除了可以记录数值一位,在2D游戏中经常使用于制作网格.例如下面这个例子.假如我们有一个三个不同颜色动画帧精灵.我们想要生成一个4*3的网格,并且每一格随机显示一个颜色.我们可以先建立一个二维数组宽度为4,高度为3,然后通过事件设置遍历数组设置每一个单元格值设置为一个随机颜色,并且创建实例精灵使用遍历时的索引来确定位置.事件如下.

我们预览一下啊,可以看到在舞台上创建了一个4*3的 网格,并且每一格时随机颜色.

三维数组

三维数组在二维数组上多增加一个深度,如下图所示.

更多关于三维数组的使用方法请查看数组进阶介绍.