[前言] authorware是專業的多媒體制作利器,但是,它也有許多先天的不足,其中之一就是原創性太少,大多數的素材需要借助其它軟件的前期處理。有點厭倦了頻繁地調用,就想折騰點名堂出來。想到“它山之石可以攻玉”的古訓,所以,參考其它編程語言,開始了一系列移花接木(包括屏保、進度條、鼠標跟隨等)。
[思路來源] vb中有許多夢幻色彩的屏幕保護程序,如雨、雪、星空、變幻線等。他們個頭不大,載入時間很短,完全可以由authorware直接調用。如果誰想在authorware中開發這樣的屏幕保護,那就先做好熬三天三夜的思想準備吧!
[實現步驟]
包括三個部分:1、在authorware中制作屏幕保護程序框架;2、在vb中制作屏幕保護內容;3、整合。
<一> authorware中的屏幕保護框架
可以參考authorware自帶的show me程序----“ssaver.a6p”。
說明一下屏保變量和函數:timeoutlimit、timeoutgoto()。前者設置屏保等待時間,后者實時記錄流逝時間,時間一到就進入屏保模塊。兩者必須配合使用,缺一不可!
1、 加入計算圖標“3--限時”,程序如下:
--------本程序設置等待時間,可以通過改動該計算圖標名稱前的數字改動等待時間
--------并記錄流逝時間
timeout:=getnumber(1,icontitle)
timeoutlimit:=timeout
timeoutgoto(iconid@"屏保")
2、 加入交互圖標“控制”,.下掛一個計算圖標“屏保”,設為熱區交互,大小位置均設置為0(無需真正的熱區交互,只是提供了一個入口)。
(1) 計算圖標“屏?!眱鹊某绦蛉缦拢?o:p>
--------跳轉調用外部vb屏保程序
jumpoutreturn("scrsaver.exe")
--------1 在ssaver.a6p中,屏保模塊出口還有一個“reset”計算圖標,
-------- 它使程序從屏保中退出后,重新調用:
-------- timeoutlimit:=timeout
-------- timeoutgoto(iconid@"屏保")
-------- 從而再次激活屏保,程序在靜靜地等待下一次的被喚醒。
--------2 這在該演示程序中是合理的(內部跳轉)。但是對于本程序卻不僅不適用,反而是致命的:
-------- 因為調用外部程序后,盡管主程序在后臺,卻并沒有停止過運行。那么,頻繁調用上述程序
-------- 的直接結果就是外部屏保程序的不斷運行,可想而知,系統終將不堪承受而崩潰!?。?o:p>
--------3 所以,針對本程序,不能在進入屏保后還執行那兩個“難兄難弟” 變量和函數。
--------4 另外,重新回到主程序后,應當再次激活屏保??赡艽蠹伊⒖叹蜁氲接胊pi函數來獲取
-------- 當前窗口句柄。我當時也這樣費了好大一番周折??墒?,最后程序中,只要你“click”
-------- 一下主程序屏幕,一切就“ok”了,怎么樣,夠簡單吧!
-------- 要知秘訣,請繼續向下看。
(2) 加入一個計算圖標在計算圖標“屏?!庇覀?,永久條件交互:mousedown。
程序如下:
timeoutlimit:=timeout
timeoutgoto(iconid@"屏保")
--------這下明白了吧,點擊屏幕后,再次執行那兩個“難兄難弟” 變量和函數,
--------從而激活了屏保,靜靜地等待下一次的被喚醒。
3、 加入一個框架結構,作為主程序。作為演示,筆者在入口設置了一個退出按鈕和三個導航按鈕,導航方向為框架結構下的三個組圖標。實際應用中,可以在這些組圖標中添加主程序。第一個空組圖標只是為了防止程序立刻進入第一個分支,這種辦法經常用到。
4、 其它細節請參考源程序(下載)。
<二> vb中的屏幕保護程序
引用自網絡,作者佚名,筆者二次加工。
程序包含一個form、一個picturebox、一個label、兩個timer。
程序效果是滿天彩球拖著尾巴向下墜落,左上角是本工作室的信息在移動。
1、 程序略(感興趣的朋友可以與我聯系);
2、編譯成exe文件“scrsaver.exe”。
<三> 整合
將“scrsaver.exe”放置在authorware的屏保程序的同級目錄下。
[執行效果]
在authorware中執行程序后,.等待3秒鐘,進入屏保,為滿天彩球拖著尾巴向下墜落,左上角是本工作室的信息在移動。
移動或點擊鼠標可退出屏保并返回authorware程序,點擊屏幕可以再次激活屏幕保護。
新聞熱點
疑難解答