我是利用了authorware中文件屬性的一個選項(resume)的功能實現進度存取。為了說明問題且不煩瑣,這里我設計了可存取兩個進度的例子。(本例用authorware4.0制作,源文件可從tcfwfw.yeah.net上下載)。
1、函數說明。
restart()------從頭開始運行。
quitrestart()-----下次運行時從頭開始運行。
jumpfile("文件名","變量名")-----退出當前執行文件,運行指定的文件,并把變量的值也傳給指定文件的同名變量。也可以不給變量名,如:jumpfile("文件名”)。
copyfile("源文件名", "目標文件名"),這是authorware的外部函數放在copyfile.u32文件中,調用這個函數可實現文件拷貝。
2、變量說明。
recordslocation----為系統變量,其值通常為為c:/windows/a4w_data。如你的windows裝在d:/windows則其值為d:/windows/a4w_data。此目錄是用來存放authorware的記錄文件(*.rec)和其他文件。
x-----為自定義變量。
3、在authorware中文件屬性的一個選項(resume)大家不常用到,見下圖:
它的作用是a4p文件打包成exe后,除了第一次,以后每次運行并不是從頭開始運行,而是從上次運行結束的地方開始繼續運行。那大家會想這個exe文件怎么知道上次運行到什么地方呢?熟知authorware的人都知道有個c:/windows/a4w_data是用來放置authorware的記錄文件的。即使你沒有裝authorware,只要你運行了用authorware制作的作品這個目錄會自動建立。
當任何一個authorware文件(如1.a4p)文件屬性被設置為rusume時,在此目錄下就會有個記錄文件存在(如1.rec)。你將文件打包(1.a4p---->1.exe)運行后退出,此文件(1.rec)就記錄了文件1.exe的退出時的運行狀況。當1.exe再次運行時并不從頭開始運行,而是讀取1.rec記錄文件繼續上次執行。
在本例中需要生成兩個authorware文件(1.a4p和2.a4p)且要打包后運行,1.a4p是主程序,2.a4p是用來處理記錄文件的。兩個文件打包后文件名分別為1.exe和2.exe。
1.a4p制作流程如下:
從新開始計算圖標里為:restart()。
退出計算圖標里為:quitrestart()。
存儲進度一計算圖標里為:x=1;jumpfile("2.exe","x")。跳到2.exe并把變量x的值傳給2.exe中的x變量。(2.exe為2.a4p打包后的文件)
存儲進度二計算圖標里為:x=2;jumpfile("2.exe","x")。
載入進度一計算圖標里為:x=3;jumpfile("2.exe","x")。
載入進度二計算圖標里為:x=4;jumpfile("2.exe","x")。
2.a4p的流程如下:
x=1計算圖標里為:copyfile(recordslocation^"1.rec",recordslocation^"save1.rec");
jumpfile("1.exe")。
recordslocation為系統變量,它的值即為authorware存放記錄文件的目錄,1.exe為1.a4p打包后的文件。
執行此計算圖標作用是把1.rec復制一份取名為save1.rec。
x=2計算圖標里為:copyfile(recordslocation^"1.rec",recordslocation^"save2.rec");
jumpfile("1.exe")。
x=3計算圖標里為:copyfile(recordslocation^"save1.rec",recordslocation^"1.rec");
jumpfile("1.exe")。
執行此計算圖標作用是用save1.rec文件替代1.rec。
x=4計算圖標里為:copyfile(recordslocation^"save2.rec",recordslocation^"1.rec");
jumpfile("1.exe")。
決策判斷圖標里的設置如下:
branch選項為to calculated path,根據x的值決定執行哪個分支。x的值是從1.exe傳過來的。
這里我把本例的運行過程給大家解釋一下:一開始當然是運行主程序1.exe,當你需要保存進度時(假設你保存在進度一),就退出1.exe運行2.exe,將1.rec復制一份為save1.rec,再退出2.exe運行1.exe。當你需要調入進度一時,就退出1.exe運行2.exe,用save1.rec把1.rec覆蓋掉,再退出2.exe運行1.exe。
我在這里之所以在兩個文件中跳來跳去是因為當1.exe在運行時1.rec文件是被保護的,無法對1.rec文件進行拷貝。所以我采用先退出1.exe,拷貝好之后再運行1.exe。大家放心,因為1.exe文件屬性設置為resume,所以跳回去時還是在原處。每當運行1.exe,都會讀取1.rec,我利用替換1.rec文件的方法實現進度的存取。大家如有其他好的方法請不吝賜教。
新聞熱點
疑難解答