亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 媒體動畫 > 正文

Authorware基礎教程:authorware7程序設計基本的教學文章--運用列表

2024-09-08 19:26:44
字體:
來源:轉載
供稿:網友

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  屬性列表

屬性列表用于存儲屬性和對應的屬性值,其中每個元素由一個屬性標識符及其對應的屬性值構成,屬性標識符和屬性值之間由冒號進行分隔。例如[#type:#text, #rect:rect(142, 76, 272, 92), #text:"hello, welcome."]就是用于描述一個文本對象的屬性列表。

3.3.2.1  創建

可以使用賦值語句創建一個屬性列表,例如程序語句

proplist:= [:]

產生一個空白的名為proplist的屬性列表,而程序語句

proplist:= [#a:1, #c:2, #b:3]

產生一個包含有3個元素的屬性列表。

3.3.2.2  訪問列表中的元素

屬性列表以屬性標識符標識其中每一個元素。因此可以使用屬性標識符作為下標,訪問不同屬性對應的屬性值,例如程序語句

proplist:= [#a:1, #c:2, #b:3]

myvariable:= proplist[#a]

將變量myvariable賦值為1,而程序語句

proplist[#b]:= 4

將屬性列表proplist中第3個元素(即由#b標識的元素)的屬性值設置為4,此時變量proplist的值為[#a:1, #c:2, #b:4]。

函數propertyatindex(proplist, index)可以獲得屬性列表中指定索引位置的元素的屬性,如果參數proplist不是一個屬性列表,或者索引號index小于1或不存在,該函數返回空值。例如propertyatindex (proplist, 2 )返回#c(即第2個元素的屬性標識符)。

函數valueatindex(proplist, index)可以求出屬性列表中指定索引位置的元素的屬性值,如果參數proplist不是一個列表,或者索引號index小于1或不存在,該函數返回空串。例如valueatindex (proplist, 2 )返回2(即第2個元素的屬性值)。

3.3.2.3  增加、刪除元素

系統函數addproperty()用于向屬性列表中增加新的元素。例如以下程序語句:

proplist:=[:]

addproperty(proplist, #name, "john")

addproperty(proplist, #userid, "1234-5678")

addproperty(proplist, #password, "3721")

創建出一個用于描述個人信息的屬性列表[#name:"john", #userid:"1234-5678", #password: "3721"]。

函數deleteatproperty(proplist, #property)用于刪除具有特定屬性的元素,例如以下程序語句:

deleteatproperty(proplist, #password)

使屬性列表proplist的值變為[#name:"john", #userid:"1234-5678"]。屬性列表中可能存在重復的屬性,在這種情況下函數deleteatproperty()僅刪除第一個具有特定屬性的元素。

3.3.2.4  排序

函數sortbyproperty(propertylist1 [, propertylist2,..., propertylist10] [, order])可以按照屬性標識符對屬性列表進行排序,函數sortbyvalue(anylist1 [, anylist2,..., anylist10] [, order])可以按照屬性值對屬性列表進行排序,屬性列表在排序之后被做上排序標記。設置order為true時按升序排序,否則按照降序排序。如果需要對單個屬性列表進行排序,例如對屬性列表proplist2按照屬性值進行降序排序,可以按照如下方式使用排序函數:

sortbyvalue(proplist2 , false)

結果是將proplist2的值變為[#b:4, #c:2, #a:1]。對屬性列表proplist2按照屬性標識符進行升序排序,可以按照如下方式使用排序函數:

sortbyproperty(proplist2,true)

結果是將proplist2的值變為[#a:1, #b:4, #c:2]。

使用排序函數可以對多個屬性列表進行排序。例如,現有如下兩個屬性列表:

lista:=[#z:1, #x:2, #y:3]

listb:=[#a:1, #c:2, #b:3]

使用sortbyproperty(lista, listb, true)可以按照lista屬性列表的屬性標識符進行升序排序,此時lista = [#x:2, #y:3, #z:1],listb = [#c:2, #b:3, #a:1]。

使用sortbyvalue(listb, lista, false)可以按照listb屬性列表的屬性值進行降序排序,此時listb = [#b:3, #c:2, #a:1],lista = [#y:3, #x:2, #z:1]。

3.3.3  多維列表

多維列表就是以列表為元素的列表,例如描述一個【顯示】設計圖標中圖像對象和文本對象的列表:

[[#type:#image, #rect:rect(12, 57, 377, 219), #filename:"c://my picture//01.bmp", #storage:#external, #format:"bmp"], [#type:#text, #rect:rect(230, 22, 316, 54), #text:"hello world!"]]

就是一個具有兩個元素的二維列表,其中每個元素都是一個一維屬性列表。在aws中,多維列表的最大維數是10。

3.3.3.1  創建

可以使用賦值語句創建一個多維列表,例如程序語句

list:= [ [0,0],[0,0],[0,0],[0,0] ]

創建了一個二維列表,其中每個元素被初始化為[0,0]。另外,還可以使用系統函數array(value, dim1 [, dim2, dim3, ...dim10])創建一個以數值value進行填充的多維列表,參數dim1~dim10決定每一維中的元素數目。例如程序語句:

list:=array(9,3,4)

創建了一個有3個列表元素的二維列表,其中每個元素被初始化為具有4個元素的一維列表[9,9,9,9],變量list的值為[[9, 9, 9, 9], [9, 9, 9, 9], [9, 9, 9, 9]]。以下程序語句用于創建具有3個屬性列表元素的二維列表

multiproplist:=[]

multiproplist:= array([#name:"", #userid:"", #password:""], 3 )

變量multiproplist的值為[[#name:"", #userid:"", #password:""], [#name:"", #userid:"", #password:""], [#name:"", #userid:"", #password:""]]。

3.3.3.2  訪問多維列表中的元素

在通過下標訪問多維列表中的數據時,需要按照從外向內的順序輸入數據在列表每一維中所處的位置,例如程序語句:

list:=array(9,3,4)

list[2,3]:=0

將列表list的第二個元素(第一維中)中的第三個元素(第二維中)賦值為0,變量list的值變為[[9, 9, 9, 9], [9, 9, 0, 9], [9, 9, 9, 9]]。而程序語句:

list[2]:=[1, 2, 3, 4]

將列表list的第二個元素(第一維中)賦值為[1, 2, 3, 4],變量list的值變為[[9, 9, 9, 9], [1, 2, 3, 4], [9, 9, 9, 9]]。

以下程序語句創建一個由個人記錄組成的數據表(二維列表),并對其中第一個記錄進行初始化:

multiproplist:=[]

repeat with i:= 1 to 3

   addlinear( multiproplist, [#name:"", #userid:"", #password:""] )

end repeat

multiproplist[1][#name]="tom"

multiproplist[1][# userid]="8765-4321"

multiproplist[1][# password]="7up8down"

變量multiproplist的值為: [[#name:"tom", #userid:" 8765-4321", #password:"7up8down"], [#name:"", #userid:"", #password:""], [#name:"", #userid:"", #password:""]]。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本精品久久电影| 国产91在线播放| 亚洲人成在线观看| 久久全球大尺度高清视频| 国产日产欧美a一级在线| 亚洲精品永久免费精品| 成年无码av片在线| 国内精品小视频在线观看| 国产精品日日摸夜夜添夜夜av| 欧美性色xo影院| 国产日韩在线精品av| 亚洲v日韩v综合v精品v| 中文字幕久久精品| 亚洲精品短视频| 精品国内自产拍在线观看| 国产91对白在线播放| 日本亚洲欧洲色| 国产精品久久97| 国产综合久久久久| 国产色综合天天综合网| 欧美日韩高清区| 亚洲理论片在线观看| 欧美大尺度激情区在线播放| 国产一区二区三区视频免费| 欧美成人精品一区二区三区| 国产精品久久久久久久久借妻| 国产成人一区三区| 日韩欧美在线视频日韩欧美在线视频| 中文字幕一精品亚洲无线一区| 国产97在线视频| 亚洲香蕉成视频在线观看| 国产精品久久久久av| 性色av一区二区三区| 黑人狂躁日本妞一区二区三区| 欧美一区二区大胆人体摄影专业网站| 欧美香蕉大胸在线视频观看| 欧美另类在线观看| 日韩中文字幕免费视频| 久久久中精品2020中文| 欧美日韩亚洲精品一区二区三区| 精品久久久香蕉免费精品视频| 51午夜精品视频| 最近2019年日本中文免费字幕| 国产精品91久久| 国产在线视频一区| 色综合久久悠悠| 欧美日韩国产在线播放| 国产亚洲精品va在线观看| 久久久精品在线| 日韩中文字幕免费视频| 久久精品国产一区| 国产精品久久久久久久久久久新郎| 欧洲亚洲免费在线| 992tv在线成人免费观看| 亚洲综合av影视| 欧美成人免费大片| 91在线无精精品一区二区| 久久久久久一区二区三区| 亚洲经典中文字幕| 热门国产精品亚洲第一区在线| 在线观看国产精品淫| 国产精品女人久久久久久| 自拍偷拍亚洲精品| 色噜噜狠狠色综合网图区| 日韩av在线免费播放| 欧美精品少妇videofree| 国产精品国产三级国产aⅴ9色| 国产欧美精品xxxx另类| 中日韩美女免费视频网站在线观看| 91国产视频在线| 久久精品影视伊人网| 精品少妇v888av| 日韩国产高清视频在线| 亚洲第一色中文字幕| 国产精品久久久久久久久影视| 欧美日韩国产专区| 国产精品网红直播| 亚洲人成欧美中文字幕| 欧美日韩亚洲激情| 亚洲欧美一区二区三区在线| 91国语精品自产拍在线观看性色| 成人做爰www免费看视频网站| 国a精品视频大全| 亚洲欧美国产一区二区三区| 91夜夜揉人人捏人人添红杏| 国产精品欧美久久久| 日韩欧美亚洲一二三区| 日韩中文字幕在线视频播放| 91在线高清免费观看| 欧美大片大片在线播放| 欧美激情视频在线免费观看 欧美视频免费一| 欧美重口另类videos人妖| 久久精品亚洲热| 亚洲欧美激情视频| 国产欧美日韩精品丝袜高跟鞋| 欧洲中文字幕国产精品| 亚洲无线码在线一区观看| 这里只有精品久久| 日韩视频在线免费| 国产欧美在线视频| 久久久久久香蕉网| 久久精品国产久精国产一老狼| 国产97人人超碰caoprom| 日韩日本欧美亚洲| 欧美国产日韩精品| 影音先锋欧美在线资源| 九九热这里只有精品免费看| 中文字幕免费国产精品| 欧美黑人视频一区| 欧美成人免费全部观看天天性色| 国产最新精品视频| 国产婷婷成人久久av免费高清| 欧美成人精品激情在线观看| 欧美裸体男粗大视频在线观看| 91精品在线播放| 国产精品久久久久久一区二区| 在线日韩日本国产亚洲| 国产日韩欧美另类| 91精品国产免费久久久久久| 97视频色精品| 色综久久综合桃花网| 国产精品成人一区二区三区吃奶| 国产成人精品一区二区三区| 欧美第一黄网免费网站| 亚洲美女在线看| 成人午夜在线视频一区| 国产美女久久久| 成人免费在线视频网站| 中文字幕亚洲欧美在线| 国产美女被下药99| 欧美激情欧美狂野欧美精品| 欧美性视频网站| 亚洲色图激情小说| 国产精品久久二区| 国产日韩欧美在线看| 亚洲黄色在线观看| 亚洲第一网中文字幕| 欧美成人黑人xx视频免费观看| 欧美成年人在线观看| 久久综合色88| 91av在线免费观看视频| 超碰日本道色综合久久综合| 欧美日韩中文字幕日韩欧美| 欧美一级在线播放| 大量国产精品视频| 毛片精品免费在线观看| 亚洲国产精品网站| 欧美激情2020午夜免费观看| 亚洲欧美日韩中文视频| 欧美成人免费视频| 亚洲白虎美女被爆操| 91国内精品久久| 日韩精品在线电影| 亚洲国产精品久久久久| 成人欧美一区二区三区黑人| 成人两性免费视频| 国产成人精品免费久久久久| 日韩av在线网页| 日本成人在线视频网址| 狠狠色香婷婷久久亚洲精品| 欧美wwwxxxx| 亚洲国产成人精品久久久国产成人一区| 少妇高潮 亚洲精品| 综合激情国产一区|