本節(jié)要點(diǎn):外部擴(kuò)展函數(shù)(ucd) 變量(variables)和函數(shù)(functions)的使用 知識對象(knowledge object)
本例簡介:本例流程如下:首先檢測用戶的顯示器分辨率,并保存在變量中。然后判斷用戶的顯示器分辨率和所要求的分辨率是否相同。如果相同,不作改變,直接運(yùn)行程序;如果不同,提示用戶改為要求的分辯率,用戶確定后,對顯示器分辨率進(jìn)行調(diào)整。如果在運(yùn)行程序時,用戶的顯示器分辨率被更改過,退出程序前,將用戶顯示器的分辨率恢復(fù)到原先的值。
本例通過authorware的一個外部擴(kuò)展函數(shù)altools.u32來實(shí)現(xiàn),這個擴(kuò)展函數(shù)可以從http://home3.pacific.net.sg/~apudeepa 上得到最新版本。本例帶有源程序中也有這個擴(kuò)展函數(shù)的最新版本。
本例的結(jié)構(gòu)設(shè)計可以很方便地添入其它內(nèi)容,可以做為模板供以后使用。
完成后流程圖
制作步驟:
1、新建一個程序,命名為“aw6_11”,你也可以在程序完成后保存時命名。
2、裝載外部擴(kuò)展函數(shù)altool.u32。如果functions窗口沒有顯示出來,選擇“window”>>“functions”命令,使它顯示。在“category”下拉菜單中選擇“test.a5p”,如果你的程序還沒有命名保存,那么這時應(yīng)該選擇“[untitled]”。
3、單擊“l(fā)oad...”按鈕,出現(xiàn)“l(fā)oad function”對話框,選擇“altools.u32”后,單擊“打開”按鈕確定。
此時出現(xiàn)altools.u32中所有的函數(shù)列表,本例只需選擇“alchangeres”,然后點(diǎn)按“l(fā)oad”按鈕確定。
這時就可以在該程序中使用“alchangeres”函數(shù)了,這個函數(shù)的作用就是改變屏幕的分辨率。用法為: alchangeres(width,height,bitpp),如alchangeres(800,600,16) 就是將顯示器設(shè)為800×600像素,16位真彩色,這也是現(xiàn)在最流行的設(shè)置。
4、向流程線上由上到下,依次拖一個計算圖標(biāo)、一個框架圖標(biāo)和一個計算圖標(biāo)。分別命名為“test screen”、“frame”和“end”。打開“frame”框架圖標(biāo),將其中所有內(nèi)容刪除,因?yàn)楸纠胁恍枰渲械膶?dǎo)航按鈕。
5、向“frame”框架圖標(biāo)右側(cè)拖入兩個群組圖標(biāo),分別命名為“next”和“notice”。
6、“test screen”計算圖標(biāo)中代碼如下:
--這里是本程序運(yùn)行所需的屏幕分辨率
--本例設(shè)為800×600,16位真彩色,你可以改為你想要的值
n_width:=800
n_height:=600
n_depth:=16--先檢測當(dāng)前屏幕分辨率,并保存起來,以便程序退出時恢復(fù)
width:=screenwidth
height:=screenheight
depth:=screendepth--如果當(dāng)前屏幕設(shè)置和本程序要求不同,
if ((screendepth <n_depth)|(screenwidth<>800)) then
goto(iconid@"notice")
else
goto(iconid@"next")
end if
7、群組(group)圖標(biāo)“next”中為主程序內(nèi)容,你可以將你的程序放在這個圖標(biāo)內(nèi)。計算(caculation)圖標(biāo)“quit”是一個按鈕,其中代碼為 “goto(iconid@"end")”,意思就是在點(diǎn)按此按鈕后,程序轉(zhuǎn)到“end”圖標(biāo)執(zhí)行。
8、群組(group)圖標(biāo)“notice”中內(nèi)容為調(diào)整顯示器的分辨率。知識對象(knowledge object)“pop-up alert”中的內(nèi)容是在顯示器分辨率不符合要求時,彈出一個窗口,提示用戶將進(jìn)行修改,用戶可以確定修改,也可以不確定。計算(caculation)圖標(biāo)“change screen”中內(nèi)容是對顯示器的分辨率進(jìn)行調(diào)整,其中代碼如下:
--將屏幕分辨率調(diào)為所要求的值
if wzmbreturnedvalue=6 then
alchangeres(n_width,n_height,n_depth)
changed:=1 --標(biāo)記屏幕分辨率已被更改
else
goto(iconid@"next")
end ifgoto(iconid@"next") --跳到主程序
9、群組(group)圖標(biāo)“notice”中“pop-up alert”是message box知識對象(knowledge object),你可以按照提示進(jìn)行各項(xiàng)設(shè)置。其中“caption/message”為設(shè)置彈出窗口的標(biāo)題和消息內(nèi)容,本例設(shè)置如下。
10、計算(caculation)圖標(biāo)“end”是在程序退出前,判斷用戶的顯示器分辨率在程序運(yùn)行時,是否被修改過,如果被修改過,那么恢復(fù)原來的分辨率設(shè)置;反之直接退出。其中代碼如下:
--如果屏幕分辨率被更改,程序退出時,恢復(fù)原設(shè)置
if changed=1 then alchangeres(width,height,depth)quit() --退出
這樣你的程序在運(yùn)行時,如果需要的話,就可以將用戶顯示器分辨率設(shè)置為合適值,也就能夠使你的作品在所有用戶的機(jī)器上完美重現(xiàn)了!
技巧提示:當(dāng)程序中有大量的函數(shù)和變量時,關(guān)于變量的說明和程序中的注釋語句是必要的,因?yàn)檫@樣能使別人可以很容易讀取自己的程序,在很長時間后也能根據(jù)注釋迅速回憶起原來的內(nèi)容。
源文件:本例使用了大量的變量和函數(shù),請大家下載源程序,仔細(xì)琢磨。本源文件中包含和altools.u32的最新版本。點(diǎn)擊這里下載
新聞熱點(diǎn)
疑難解答