- 关 键 词:
- authorware
- 数据库
3.3 使用列表
列表变量是Authorware中最为灵活的变量,它用于存储一组相关的数据,同时并不要求这些数据都属于同一类型。
利用Authorware提供的列表处理函数,可以很方便地对列表中的数据进行管理。列表可容纳的最大元素数目是32 767。3.3.1 线性列表
线性列表的所有元素都被包围在一对方括号([ ])中,每个元素是一个单独的值,元素之间由逗号进行分隔。
3.3.1.1 创建
可以通过以下几种方式,创建列表型变量。
1.通过赋值语句
可以使用赋值语句创建一个列表型变量,例如程序语句:
LinearList:= [ ]
产生一个空白的名为LinearList的线性列表,而程序语句:
LinearList:=[ "A", "u", "t", "h", "o", "r"]
产生一个包含有6个字符型元素的线性列表。
2.通过Array()
系统函数Array用于快速创建具有多个相同元素的列表。例如程序语句:
LinearList:=Array(0, 6)
产生一个具有6个元素的线性列表,即[0, 0, 0, 0, 0, 0]。
3.通过List()
系统函数List可以将字符串形式的数值序列转换为列表。例如程序语句:
LinearList:=List("[1,2,3,4,5,6]")
将产生列表[1, 2, 3, 4, 5, 6]。这一函数通常用于将来自于程序外部(例如文本文件、数据库等)的数据转换为列表。
3.3.1.2 访问列表中的元素
线性列表按照从左到右的顺序标识其中每一个元素,因此可以使用下标(元素的存储位置)对线性列表中的数据进行访问,例如程序语句:
LinearList:=[ "A", "u", "t", "h", "o", "r"]
MyVariable:= LinearList[1]
将变量MyVariable赋值为"A",而程序语句:
LinearList[1]:= "a"
将线性列表LinearList的第一个元素赋值为"a",此时变量LinearList的值为[ "a", "u", "t", "h", "o", "r"]。
使用变量和循环语句控制列表的下标,可以实现遍历列表中每个元素的目的。例如以下代码实现对列表中所有元素求和的功能:
TheSum:=0
LinearList:=[1997,1998,1999,2000,2001,2002,2003,2004,2005]
repeat with i:=1 to ListCount(LinearList)
TheSum:=TheSum+LinearList[i]
end repeat
坐标变量和矩形变量是两类特殊的线性列表,其中包含的坐标也可以通过下标进行访问。以下程序语句创建了一个坐标变量MyPoint和一个矩形变量MyRect:
MyPoint:= Point(100, 120)
MyRect:= Rect(Point(10, 20), Point( 30, 40))
MyPoint的横坐标以MyPoint[1]表示,而MyRect左上角的纵坐标以MyRect[2]表示。
除了使用下标,还可以通过函数ValueAtIndex(anyList, index )对线性列表中的元素进行访问,该函数返回线性列表中指定位置处的元素值,如果参数anyList不是一个列表,或者索引号index小于1或不存在,该函数返回0。例如
LinearList:=[ "A", "u", "t", "h", "o", "r"]
MyVariable:= ValueAtIndex(LinearList, 3 )
获得第3个元素的值"t",而ValueAtIndex(MyRect, 3)返回矩形右下角的横坐标30。
3.3.1.3 增加、删除元素
通过赋值语句或函数AddLinear(linearList, value [, index])可以向线性列表中增加新的元素,例如赋值语句
LinearList:=[ "A", "u", "t", "h", "o", "r"]
LinearList[7]:= "w"
LinearList[8]:= "a"
向线性列表LinearList中增加两个元素,此时变量LinearList的值为["A", "u", "t", "h", "o", "r", "w", "a"]。如果元素下标跳跃式增加,则被忽略的元素自动被赋值为0。例如赋值语句
LinearList[10]:= "e"
使变量LinearList的值变为[ "A", "u", "t", "h", "o", "r", "w", "a", 0, "e"]
函数AddLinear(linearList, value [, index])用于向列表linearList中指定位置处(通过索引参数index指定)插入值为value的元素。函数DeleteAtIndex(anyList, index)用于删除列表中指定位置处的元素。函数FindValue(anyList, value [, index])用于在列表中查找具有指定值的元素。使用以下代码,可以将LinearList中无用的元素0替换为"r":
index:=FindValue(LinearList, 0 )
DeleteAtIndex( LinearList, index)
AddLinear(LinearList, "r", index)
使变量LinearList的值变为["A", "u", "t", "h", "o", "r", "w", "a", "r", "e"]。替换指定元素的功能也可以通过函数调用
SetAtIndex(LinearList, "r", index)
或者赋值语句
LinearList[index]:= "r"
来实现。
如果省略索引参数,则对于未排序的线性列表,该函数向线性列表的末尾添加新的元素,而对于已排序的线性列表,Authorware将根据value的值,自动将新的元素插入到线性列表中合适的位置,从而保持元素间的排序方式。如果索引跳跃式增加,则被忽略的元素自动被赋值为0。
3.3.1.4 排序
使用函数SortByValue(anyList1 [, anyList2,..., anyList10] [, order])可以按照元素的值对列表进行排序并标上排序标记。设置order为TRUE时按升序排序,否则按照降序排序。如果需要对单个列表进行排序,例如对线性列表LinearList进行排序,可以按照如下方式使用排序函数
LinearList:= ["A", "u", "t", "h", "o", "r", "w", "a", "r", "e"]
SortByValue(LinearList, TRUE)
结果是将LinearList的值转变为["A", "a", "e", "h", "o", "r", "r", "t", "u", "w"]。
该函数可以按照参数中第一个列表的顺序排列多个列表,即将相关的多个列表以第一个列表为基准同时进行排序。例如,现有两个线性列表,分别记录了三种商品的名称和对应的价格:
ListA:=["Ball", "Apple", "Cat"]
ListB:=[30, 10, 20]
使用SortByValue(ListA ,ListB, TRUE)可以按照商品名称进行升序排序,此时LisrtA= ["Apple", "Ball", "Cat"],ListB= [10, 30, 20]。
使用SortByValue(ListB, ListA, FALSE)可以按照商品价格进行降序排序,此时ListB= [30, 20, 10],LisrtA= ["Ball", "Cat", "Apple"]。
从上面的排序结果可知,在以某一个列表为基准进行排序的同时,维持了数据间的相对关系,即同一种商品的名称和价格始终相对应。如果多个列表的元素数目不一致,该函数不进行排序。
列表在排序之后,被Authorware标记为已排序,此后如果对列表进行了改变元素顺序的操作,比如使用函数AddLinear( )向列表中指定位置处插入新的元素,列表就被重新标记为未排序。
3.3.2 浏览地址: http://www.qqread.com/authorware/t222903.html
更多内容请看ASP.NET教程、FreeBSD使用教程专题,或进入讨论组讨论。
相关专题
- ASP.NET教程 (8343篇文章)
- FreeBSD使用教程 (6512篇文章)
- 用authorware制作多媒体自荐光盘(五) (396次浏览)
- 用authorware制作多媒体自荐光盘(二) (395次浏览)
- 2.1 创建Authorware 显示图标 (343次浏览)
- authorware课件打包小技巧 (214次浏览)
- Authorware 6.0网上多媒体课件制作--14.3 网 (148次浏览)
- 如何利用MJSAPI.u32在Authorware中实现Midi (142次浏览)
- 多媒体制作常见问答集(Authorware篇 下) (126次浏览)
- Authorware中如何输入数学符号? (121次浏览)
- Authorware作品的加密保护(1) (116次浏览)
- Activex控件的应用 (112次浏览)



