[前言] 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) 计算图标“屏保”内的程序如下:
--------跳转调用外部vb屏保程序
jumpoutreturn("scrsaver.exe")
--------1 在ssaver.a6p中,屏保模块出口还有一个“reset”计算图标,
-------- 它使程序从屏保中退出后,重新调用:
-------- timeoutlimit:=timeout
-------- timeoutgoto(iconid@"屏保")
-------- 从而再次激活屏保,程序在静静地等待下一次的被唤醒。
--------2 这在该演示程序中是合理的(内部跳转)。但是对于本程序却不仅不适用,反而是致命的:
-------- 因为调用外部程序后,尽管主程序在后台,却并没有停止过运行。那么,频繁调用上述程序
-------- 的直接结果就是外部屏保程序的不断运行,可想而知,系统终将不堪承受而崩溃!!!
--------3 所以,针对本程序,不能在进入屏保后还执行那两个“难兄难弟” 变量和函数。
--------4 另外,重新回到主程序后,应当再次激活屏保。可能大家立刻就会想到用api函数来获取
-------- 当前窗口句柄。我当时也这样费了好大一番周折。可是,最后程序中,只要你“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程序,点击屏幕可以再次激活屏幕保护。
新闻热点
疑难解答