首页 > 设计 > 媒体动画 > 正文

Authorware开发实例:Authorware 6.0 灵活技术与实际示例(11)

2020-09-19 18:27:29
字体:
来源:转载
供稿:网友

第十一节 检测和调整显示器分辨率

by sintian

   用authorware制作课件,在制作之前就要确定好作品的分辨率,现在常用的分辨率为800×600。可是这并不能保证设计的效果能够在用户的计算机上完美重现。如果用户的显示器分辨率为640×480,那么作品将有一部分在屏幕外,根本显示不出来;如果用户显示器的分辨率为1024×768,那么作品仅能占据屏幕的一部分,也不能让用户看到最佳效果。所以最好的方法是,在程序运行时,检测用户的显示器分辨率,如果和你设计的不一致,那么提示用户改变它。

本节要点:外部扩展函数(ucd) 变量(variables)和函数(functions)的使用 知识对象(knowledge object)

本例简介:本例流程如下:首先检测用户的显示器分辨率,并保存在变量中。然后判断用户的显示器分辨率和所要求的分辨率是否相同。如果相同,不作改变,直接运行程序;如果不同,提示用户改为要求的分辩率,用户确定后,对显示器分辨率进行调整。如果在运行程序时,用户的显示器分辨率被更改过,退出程序前,将用户显示器的分辨率恢复到原先的值。
  本例通过authorware的一个外部扩展函数altools.u32来实现,这个扩展函数可以从作者的主页
http://home3.pacific.net.sg/~apudeepa 上得到最新版本。本例带有源程序中也有这个扩展函数的最新版本。
  本例的结构设计可以很方便地添入其它内容,可以做为模板供以后使用。

完成后流程图

制作步骤:
1、新建一个程序,命名为“aw6_11”,你也可以在程序完成后保存时命名。
2、装载外部扩展函数altool.u32。如果functions窗口没有显示出来,选择“window”>>“functions”命令,使它显示。在“category”下拉菜单中选择“test.a5p”,如果你的程序还没有命名保存,那么这时应该选择“[untitled]”。

3、单击“load...”按钮,出现“load function”对话框,选择“altools.u32”后,单击“打开”按钮确定。

  此时出现altools.u32中所有的函数列表,本例只需选择“alchangeres”,然后点按“load”按钮确定。

  这时就可以在该程序中使用“alchangeres”函数了,这个函数的作用就是改变屏幕的分辨率。用法为: alchangeres(width,height,bitpp),如alchangeres(800,600,16) 就是将显示器设为800×600像素,16位真彩色,这也是现在最流行的设置。
4、向流程线上由上到下,依次拖一个计算图标、一个框架图标和一个计算图标。分别命名为“test screen”、“frame”和“end”。打开“frame”框架图标,将其中所有内容删除,因为本例中不需要其中的导航按钮。
5、向“frame”框架图标右侧拖入两个群组图标,分别命名为“next”和“notice”。
6、“test screen”计算图标中代码如下:

--这里是本程序运行所需的屏幕分辨率
--本例设为800×600,16位真彩色,你可以改为你想要的值
n_width:=800
n_height:=600
n_depth:=16

--先检测当前屏幕分辨率,并保存起来,以便程序退出时恢复
width:=screenwidth
height:=screenheight
depth:=screendepth

--如果当前屏幕设置和本程序要求不同,
if ((screendepth <n_depth)|(screenwidth<>800)) then
goto(iconid@"notice")
else
goto(iconid@"next")
end if

7、群组(group)图标“next”中为主程序内容,你可以将你的程序放在这个图标内。计算(caculation)图标“quit”是一个按钮,其中代码为 “goto(iconid@"end")”,意思就是在点按此按钮后,程序转到“end”图标执行。

8、群组(group)图标“notice”中内容为调整显示器的分辨率。知识对象(knowledge object)“pop-up alert”中的内容是在显示器分辨率不符合要求时,弹出一个窗口,提示用户将进行修改,用户可以确定修改,也可以不确定。计算(caculation)图标“change screen”中内容是对显示器的分辨率进行调整,其中代码如下:

--将屏幕分辨率调为所要求的值
if wzmbreturnedvalue=6 then
alchangeres(n_width,n_height,n_depth)
changed:=1 --标记屏幕分辨率已被更改
else
goto(iconid@"next")
end if

goto(iconid@"next") --跳到主程序

9、群组(group)图标“notice”中“pop-up alert”是message box知识对象(knowledge object),你可以按照提示进行各项设置。其中“caption/message”为设置弹出窗口的标题和消息内容,本例设置如下。

10、计算(caculation)图标“end”是在程序退出前,判断用户的显示器分辨率在程序运行时,是否被修改过,如果被修改过,那么恢复原来的分辨率设置;反之直接退出。其中代码如下:

--如果屏幕分辨率被更改,程序退出时,恢复原设置
if changed=1 then alchangeres(width,height,depth)

quit() --退出

  这样你的程序在运行时,如果需要的话,就可以将用户显示器分辨率设置为合适值,也就能够使你的作品在所有用户的机器上完美重现了!

技巧提示:当程序中有大量的函数和变量时,关于变量的说明和程序中的注释语句是必要的,因为这样能使别人可以很容易读取自己的程序,在很长时间后也能根据注释迅速回忆起原来的内容。

源文件:本例使用了大量的变量和函数,请大家下载源程序,仔细琢磨。本源文件中包含和altools.u32的最新版本。点击这里下载

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表