-
4.1.1
什么是
ucd
< br>和
u32
ucd
(
user code dll
)是用户自定义函数的缩写。包括
authorware
自带的
ucd
函数和用户用
< br>vb
、
vc
、
< br>delphi
编写
的
ucd
p>
函数。
ucd
函
数又称为外部函数,在使用之前必须先引入到当前文件中,当外部函数被正确引入后,我们就可以像使用系统函<
/p>
数一样使用它了。
ucd
函数的后缀一般
为
u32
(
32
位)或
ucd
(
16
位,在
windows
3.x
中使用)。在
authorware
< br>7.0
中已经不再带有
16
位的
ucd
了。
4.1.2
如何导入外部函数
<
/p>
用户自定义函数引入的步骤,以装载
“cover.u32”
p>
为例:
1
)用<
/p>
authorware
新建一个文件,并命名为
< br>
2
)选择【窗口】→【面板】→【函数】菜单项或单击工
具栏上的【函数】按钮,打开函数对话框。
3
)在函数对话框的
“
种类
”<
/p>
下拉列表中选择当前的文件
“cover.a7p”
,单击
“
加载
”
按钮
4
)弹出
“
加载函数
”
对话框。
在对话框中选择要加载的外部函数,这里选
“cover.u32”
单击【打开】按钮。
5
)弹出对
话框,在
“
名称
”
项下面显示的是
“cover.u32”
所包含的两个函数
“cover()”
和
“uncove
r()”
,按住【
ctrl
】快
捷键,再分别单击着两个函数就可以选中它们。单击【加载】按钮装载这两个被选中的函数。<
/p>
6
)如果出现如图
4-1
所示,说明函数已经加载成功,如选中
“cover
”
函数,则在下面的
“
描述
”
框中显示的是函数的名
称和具体的使用方法。<
/p>
图
4-1
加载
“cover”
函数
7
)将外部函数引入到计算图标或指定的区域,只
要打开计算图标,双击图
4-1
中的函数名即可,效果如图
p>
4-2
所示。
图
4-2
“cover”
函数的应用
4.1.3
如何覆盖演示窗口外的
桌面部分
——
cover.u32 <
/p>
如果你的多媒体演示系统的显示区域大小设置为
640×
480
像素,
而显示器的分辨率被设置成
800×
600
像素,
那么它
在运行的时候显示区域比屏幕的区域要小。屏幕上的其他部分在你的程序运行时
会继续显示在屏幕上。这样,会使用户
分心,那么有没有一个办法使程序在运行时隐藏其
余部分而不干扰用户的视线呢?
方法是运用
< br>u32
函数
cover
和
uncover
,我们来举一个例子。
p>
1
)拖入一个显示图标,在显示图标中导入一个背景图片。
2
)拖入一个交互图标,在交互图标右边拖入
三个计算图标,分别起名为
“
隐藏桌面
”
、
“
显示桌面
”
和
“
退出演示
”
。在交互
图标中安排好三个按钮的相对位置。
3
)载入(上一节中已经介绍过)
u32
函数包
cover.u32
< br>中的函数:
cover()
和
u
ncover()
。
4
)打开
“
隐藏桌面
”
计算图标在其中输入:
cover()
。
p>
5
)打开
“
p>
显示桌面
”
计算图标在其中输入:
uncover()
。
6
)打开
“
退出演示
”
计算图标在其中输入:
uncover()
quit()
来结束演示。程序结束前一定要取消覆盖屏幕,即运行
uncover()
,不然会影响到其他程序的运行。
7
)该程序一定要打包以后才能看出运行效果。最好在打包前不要运行此程序。
4.1.4
如何载入
windows api
一、
windows
api
简介
windows
api
是应用程序编程接口
(application
programing interface)
的缩写,它是一系列复杂的函数、消息的
集
合,为高级语言提供了大量可扩充的功能强劲的函数。
二、
windows
api
函数的载入
aw
中可以利用动态链接库(
dll
)文件,直接使用<
/p>
windows api
函数库的功能。一个
dll
文件就是一个函数库,包含若
干个函数。调用
dll
文件时,必须明确函数的调用协议,包括函数的名称、参数的数
目、参数的类型、返回值的类型。
1
)
windows
函数库主要的几个文件。
l
:屏幕显示及打印功能的函数集
l
:鼠标、键盘
、通信端口、声音、时钟功能的函数集
l
:文件及内存管理(核心部分)功能的函数集
< br>
l
:
windows
32
网络接口库
l
:
windows 32
、
advapi32
核心部件
2
)
dll
文件的载入过程。
与调用外部函数相似,
< br>dll
函数集在使用之前必须事先载入和声明,其载入的过程要比调用
ucd
函数更加复杂。以装载
“window
p>
system
”
文件为例,具体的载入过程
介绍如下。
单击工具栏上的
【函数】
按钮,
打开
“
函数
”
面板,
在
“
种类
”
下拉列表中选择当前的文件
“
关于
.a7p”
。
单击
【加载】
按钮,
出现
“
加载函数
”
对话框,选择
“c:
window syst
em
”
文件,单击【打开】按钮,出现如图
4-3
所示的函数
设置对话框,具体的选项如下。
function name
:输入要调用的
函数的名称,这里是
“shellabouta”.
arguments
:指明
要用到的参数类型,这里是
“long,string,string,
long”
。
return
:函数返回值的类型,这里是
“long”
。<
/p>
description
:函数的语法
。
图
4-3
载入
dll
函数设置对话框
单击图<
/p>
4-3
中的
【
l
oad
】
按钮装载函数,
如果装载成功
,
则在对话框中显示
“successfully
loaded
。
装载完毕后,单击
图
4-3
中的【
done
】按钮,被成功装载的函数就会出现在函数框中。
4.1.5
调用
window
p>
标准的
“
关于
”<
/p>
窗口
要调用
w
indow
标准的
“
关于
”
窗口主要利用
文件中的<
/p>
“shellabouta()”
函数实现。
1
)
“shellabouta
()”
函数的使用格式。
shell
abouta(hwnd,szapp,szotherstuff,hicon)
hwnd
:设置窗口的句柄。
szapp
:设置窗口的标题。
p>
szotherstuff
:在版权说明和使用权之间的空白处增加
额外的说明。
hiocn
:一般取<
/p>
0
。
2
)新建一个文件,名为
“
关于
.a7p”
,装载函数
“shellabouta()
”
,其过程与上面是一样的,这里不再介绍。
3
)装载函数成功后,在流程线上放一计算图标,在其中输入如下内容:
szapp=
使用及技巧精解
szotherstuff=
欢迎您使用
authorware7.0
使用及技巧精解
!
shellabouta(windowhandle,szapp,szothers
tuff,0)
其中
szapp
,<
/p>
szotherstuff
是两个自定义变量
4
)保存并运行程序。
4.1.6
如何制作最小化、最大化、关闭窗口
按钮和拖动窗口
在用
authorware
制作多媒体作品时,我们希望展示窗口和普通窗口一样可
以最小化、关闭、拖动。要实现这一目的,
最简单的方法是在设置文件属性时,保留标题
栏,但这样会影响作品的美观。如何制作自己的标题栏,使之和整个作品
搭配协调,并且
可以实现标题栏的功能呢?
使用
windows api
函数而不
通过单击窗口的控制图标来控制
authorware
的运行窗
口,它可以使你的
authorware
程
序在没有标题栏的情况下自由控制窗口的显示状态,这对于编制精美的多媒体程序是很有帮助的。
< p>
你可以找一个你认为满意的窗口把它截取下来,用
photoshop
修改成你满意的样子,保存为作品的背景。再制作最小
化和关闭的按钮图形以备用。
1
)新建文件
在
authorware
中新建一个文件。单击【修改】→【
文件】→【属性】菜单,在弹出的
“
文件属性
< br>”
对话框中选择
“
回放
”
标签,将
“
大小
p>
”
项设定为
“
根据
变量
”
,取消
“
标题栏
”
和
“
菜单栏
”
的复选框前的对勾。
2
)窗口设置
拖一个显示图标到流程线上,命名为
“
背景
< br>”
。将制作好的背景图片导入,再拖一个计算图标到流程线上,命名为
“
窗口大
小
”
,双击,在其中输入程序:
resizewindow(400, 280)
movewindow(100, 100)
第一句的作用是
将窗口大小设置成合适大小
(以背景图片的大小为准)
。
第二句的作用是将窗口移动到屏幕的合适位置。
3
)最小化、最大化及关闭功能
p>
在流程线上放置一个交互图标,命名为
“
窗
口控制
”
。在其右侧放置三个计算图标,响应类型都设为
“
按钮响应
”
,分别
命
名为
“
最小化
”
、
“
最大化
”
、
“
关闭
”
。在它们的分支属性对话框
“
响应范
围
”
项中复选
“
永久
”
,
“
分支
”
项选择
“
返回
”
。如你
认为需要,可编辑这三
个响应的按钮样式,用制作好的图片代替默认的样式并调整其位置。
< br>在
“
最小化
”
< br>图标中输入程序:
showwindowasync(windowhandle,
6
)
在
“<
/p>
最大化
”
图标中输入程序:
showwindowasync(windowhandle,
3
)
这里调用
windows api
函数
showwindowasync
实现将窗口最小化、最大化。
保存时,系统会弹出对话框,提示选择
此函数的来源,选择
wi
napi.u32
。
authorware 6
以前的版本是加载
< br>api
函数
showwindow
,
现在如还加载它则会出现于
aw
内
部函数
showwindow
同
名而无
法加载的情况,
从而无法完成
“
使窗口
最小化
”
等任务。
现在加载
api
函数
showwindowasync
p>
,
该函数可以替代
showwindow<
/p>
原有的功能。
格式为:
showwindowasync( hwnd
hwnd, int ncmdshow)
其中:
hwnd
hwnd
设置窗口的句柄,一般为
windowhandle
ncmdshow
:定义如何显示启动程序的常数值,即程序启动后的窗
口形式,取值如下。
0
——
隐藏窗口,活动状态给令一个窗口。
1
或
9
——
用原来的大
小和位置显示一个窗口,同时令其进入活动状态。
2
——
最小化窗口,并将其激活。
3
——
最大化窗口,并将其激活。
< br>
4
——
用最近的大小和位置显
示一个窗口,同时不改变活动窗口。
5
——
用当前的大小和位置显示一个窗口,同时令其进入活动状态。
6
——
最小化窗口,活动状态给
令一个窗口。
7
——
最小化一个窗口,同时不改变活动窗口。
8
——
用当前的大小和位置显示一个窗口,不改变活动窗口。
在
“
退出
”
图标中输入程序:
quit()
作用是退出本程序。
4
)窗口移动功能
< br>在这里我们要实现当用户拖动自定义标题栏时,窗口随之移动的功能。
在交互图标
“
窗口控制
”
右侧放置一个
“
组群
”
图标,响应类型为
“
热区响
应
”
,命名为
“
移动窗口
”
,在分支属性对话框中
“
响
应范围
”
项
复选
“
永久
”
,
“
分支
”
项
选择
“
返回
”
。设定其响应范围包围背景的上部分,这就是我们的标题栏范围。
双击
“
移动窗口
”
图标,在其中放置一个
“
交互
”
图标,命名为
“move window”
< br>。在此交互图标右侧放置一个
“
计算
”
图标
和一个群组图标,响应类型都为
“
条件响应
”
,响应条件分别为<
/p>
mousedown
和
~mousedo
wn
。设置
mousedown
图
p>
标分支的属性,
“
自动
”
为
“
为真
”
,
“
分支
”
为
“
重试
”
。
设置
~ mousedown
图标分支的属性,
“
自动
”
为
“
为真
”
,
“
分支
”
为
“
退
出交
互
”
。
在<
/p>
mousedown
计算图标中输入程序:
releasecapture()
sendmessage( windowhandle, 161, 2, 0)
这里同样是调用
windows api
函数实现窗口可拖动的功能。当系统提示选择这两个函数的来源时,选择
winapi
.u32
。
~mousedown<
/p>
群组图标内为空。
整个程序就完成了,
最后的流程如图
4-4
所示。
我们看一下最后的效果。单击
“
最小化
”
按钮可将窗口最小化到任务栏,在任务栏上单击可恢复;单击
“
关闭
”
按钮可退出
本程序;拖动自定义的标题栏可移动窗口的位置,达到了预期的效果。
< br>
图
4-4
窗口属性流程图
< br>这个程序中你可以再设一个按钮,命名为
“
还原
”
,在其计算图标中输入:
showwindowasync(windowhandle,
1
)
设一个与最大化正好相反的激活
条件和非激活时隐藏按钮,最大化按钮也要同样设置。并把
“
最
大化
”
和
“
还
原
”
按钮重叠
放置。
< br>
4.1.7
用
winap
i.u32
制作消息框
在
authorware
制作消息框可以利用其提供的
winapi.u32
中的
messagebox
函数,
其格式为:
messagebox
(hwnd
hwnd, lpcstr lptext, lpcstr
lpcaption, uint utype)
。用它可以做出标准的
windows
消息框。
一、方法一
首先,新建一个要求用户注册的
authorware 7
p>
文件,然后加载
winapi.u32
中的
messagebox
函数。
然后,在流程线上放置一个名为
“
消息
”
的计算图标,在其中输入如下内容:
hh:
=messagebox (windowhandle,
密
码错误,请输入正确的注册码!
提醒
<
/p>
)。
hh
是一个自定义变量,用于判断用
户按了哪个按钮,以便执行下一个
流程。至于它的返回值,将在下边一并列出。
接着,在
“
消息
p>
”
计算图标下再放置一个
“
判断
”
计算图标,在其中输入以下内容:
if hh=2 then
quit()
else
goto(iconid@
跳转到注册码输入
end if
内容仅作为参考,大家可以根据实际情况自行确定输入内容。
好了,现在运行程序看一下,感觉如何?如果适当修改
mess
agebox
函数的
“uint utype”
参数值,还可以得到五种效
果。具体效果如何,请诸位自己尝试,在此就不一一
展示了。
1
)
uint
utype
参数值可分为五大类,分别介绍如下。
第一类可取值为:
0
、
1
、
2
、
3
p>
、
4
、
5
、
8
、
10
第二类可取值为:
16
、
17
、
18
、
19
、
20
、
21
、
24
、
26
(在第一类取值加
16
)
第三类可取值为:
32
、
33
、
34
、
35
、
36
、
37
、
40
、
42
(在第一类取值加
32
p>
)
第四类可取值为:
48
、
49
、
50
、
51
、
52
、
53
、
56
、
58
(在第一类取值加
p>
48
)
第五类可
取值为:
64
、
65
< br>、
66
、
67
< br>、
68
、
69
< br>、
72
、
74
< br>(在第一类取值加
64
)
2
)各按钮的返回值介绍如下。
1
确定
5
忽略
2
取消
6
是
3
终止
7
否
4
重试
其中,
“
中断
”
按钮没有返回值。
二、方法二
首先,我们来看一下打开如何一个计算图标。
在计算图标的快捷工具栏右侧有个
“
!
”
的按钮,作用是
“
插入提示
框
”
,单击该按钮,会弹出如图
4-5
所示的设置框。
图
4-5
消息框的设置对话框
设置完后,单击
“test”
按钮看看效果如何?然后确定。在计算图标中的当
前位置就插入了一条语句,还有各个按钮的返
回值。
如:
systemmessagebox(windowhandle,
你真的想退出
吗?
< br>
退出
)
-- 6=yes, 7=no
运行结果如图
4-6
所示(其中标题栏中的
“
退出
”
可在计算图标中修改)。
图
4-6
消息框
systemmessage
box
是系统函数不需要在
winapl.u32
中加载。
格式为:
result = systemmessagebox(windowhandle<
/p>
,
,
type
or #buttons, #icon, default,
#modality])
参数设置与
messagebox
类似。
4.1.8
用
winapi.u3
2
屏蔽功能键和
隐藏任务栏
1
)新建一个文件,文件名为
sample.a7p
。
2
)放置一计算图标于流程线上。
<
/p>
3
)按【
ctrl
+
shift
+
f
< br>】快捷键,打开
“
函数
”
窗口。
4
)
选择
sample.a7p
,
单击
【加载】
钮,
打开
2
文件,
并引入其中的
systemparameters info()
、
fin
dwindow()
和
setwindowpos()
三个函数。
5
)双击
计算图标,在里面输入如下程序语句:
systempara
metersinfo(97,1,1,1)
——
屏蔽键盘所有
功能键。
wnd:=findwindow(″shell_
traywnd″,″″)——
捕捉任务栏窗口。
setwindowpos(wnd,0,0,0,0,0,128)
——
隐藏任务栏窗口。
6
)在程序的退出处放置一计算图标,双击计算图标,在里面写上:
l
systemparametersi
nfo(97,0,1,1)
——
恢复键盘所有功能键。
l
wnd:=fin
dwindow(″shell_traywnd″,″″)——
捕捉任务栏窗口。
p>
l
setwind
owpos
(
wnd,0,0,0,0,0,64
)
——
显示任务栏窗口。
我们还可以在运行程序前,
通过
win
dows api
函数捕捉所有的窗口,
获得窗口的句柄,
p>
然后再向它们依次发送
mw_quit
消息
,这样就可以在运行程序之前,关闭所有正在运行的程序,从而释放出更多的资源给你的多媒体作品。
4.1.9
用
bu
deky.u32
屏蔽功能键
设计程
序时,因为某些特殊需要,有时可能需要屏蔽系统的某些功能键,比如【
alt+tab
】
、
【
alt
+f4
】
、
【
ctrl+q
】等。
本例中就使用
bu
deky.u32
中的函数来屏蔽某些功能键,所使用的函数有:
1
)
disablequit
p>
()
格式:
re
sult
:
=disablequit
(
windowhandle
)
p>
屏蔽用于退出的某些快捷键,比如:
【
al
t+f4
】
、
【
ctrl+q
】和【
ctrl+.
】
。
2
)
p>
disableswitching()
格式:
disableswitching()
屏蔽某些功能键及组合,比如【
alt+tab
】<
/p>
、
【
alt+esc
】
、
【
ctrl+esc
】
、
【
ctrl+al
t+delete
】和窗口键。
3
)
restorequit
格式:
restorequit()
解除
restorequit
()函数屏蔽的功能键。
4
)
restore
switching()
格式:
restoreswitching()
解除
restoreswitching()
函数屏
蔽的功能键。
具体步骤如下。
p>
1
)新建一个文件,保存为
“
屏蔽功能键
.a7p”
,文件流程如图
4-7
所示。
图
4-7
屏蔽功能键流程图
在
“
初始化
”
图标中输入以下内
容。
resizewindow(300, 200)
--
设置窗口大小
setwindowtext( windowhandle,
屏蔽功能键
设置演示窗口标题栏的名称为
“
屏蔽功能键
”
2
)打开交互图标,输入图
4-8
所示的内容,调整好按钮的相对位置。
图
4-8
交互图标中的显示对象
3
)在
“
屏蔽功能键
”
p>
按钮交互分支下的计算图标中输入以下内容:
disableswitching()
hint:=
、
、
、
和
窗口键
已被屏蔽
systemmessagebox(windowhandle,hint ,
屏蔽功能
键
屏蔽功能键,然后显示提示信息。
技
巧:因字符串需要加双引号,而在提示信息中由于也有双引号,
所以必须在内部每个双引
号前加转意字符
“
”
< br>。第一个
和最后一个双引号当然是不能加的。
4
)在
“
屏蔽退出键<
/p>
”
按钮交互分支下的计算图标中输入以下内容:
< br>
disablequit( windowhandle )
hint:=
、
和
已被屏蔽
systemm
essagebox(windowhandle, hint, ,
屏蔽退出
键
屏蔽退出键,然后显示提示信息。
5
)在
“
解除屏蔽
”
按钮交互分支下的计算图标中输入以下内容:
--
解除各键的屏蔽!
restorequit()
restoreswitching()
hint:=
各键已经解除屏蔽!
systemmessa
gebox(windowhandle,hint ,
解除屏蔽
48) -- 1=ok
解除各键的屏蔽,然后显示提示信息。
6
)在
“
退出
”
按钮交互分支下的计算图标中输入以下内容:
--
退出程序前解除屏蔽
restoreswitching()
restorequit()
quit()
防止用户未单击
“
解除屏蔽
”
按钮解除对各键的屏蔽,在退出程序前执行解除屏蔽函数保证程序退出后各键均解除屏蔽
。
7
)运行程序,标题栏发生了变化
。单击
“
屏蔽功能键
”
按钮出现如图
4-9
所示的信息。
图
4-9
屏蔽功能键消息框
4.1.10
如何设置你的演示窗口的位置总在
最前,即不被其他窗口覆盖
在有些时
候,我们用
authorware
做的程序希望演示窗口的位置
总在最前,即不要被其他窗口覆盖。比如我们在程序中
调用了
w
ord
,在进行
word
编辑的同时<
/p>
authorware
的主程序的小窗口仍然在前。我们就要用到
2
中的
setwindowpos()
函数。
setwindowpos<
/p>
:这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。<
/p>
函数格式:
setwindowpos( hwnd
hwnd
,
hwnd
hwndinsertafter , int x, int y, int cx, int cy,
uint uflags)
其中的参数意义如下。
hwnd
:欲设置的窗口的句柄。
<
/p>
hwndinsertafter
:窗口句柄。在窗口列表中,欲
设置的窗口
hwnd
会置于这个窗口句柄的后面。这个参数也可
能取下
面的值:
1
< br>——
将窗口置于窗口列表底部。
0
——
将窗口置于
z
序列的顶部;
z
序列代表在分级结构中,窗口针对一个
给定级别的窗口显示的顺序。
-1
—
—
将窗口置于列表顶部,并位于任何最顶部窗口的前面(将一个窗口置顶,不会被任何窗
口遮挡)
。
-2
——
将窗口置于列表顶部,并位于任何最顶部窗口的后面。
x
:窗口新的
x
坐标。
y
:窗口新的
y
坐标。
cx
:新的窗口宽度。
cy
:新的窗口高度。
wflags
取值如下:
1
——
保持当前大小(
c
x
和
cy
会被忽略)
< br>。
2
——
保持当前位置(
x
和
y
设定将被忽略)
。
4<
/p>
——
保持窗口在列表的当前位置(
hwn
dinsert
after
将被忽略)
。
8
——
窗口不自动重画。
10
——
不激活窗口。
32
——
围绕窗口画一个框
(强迫一条
wm_ncc alcsize
消息进入窗口,即使
窗口的大小没有改变)
。
64
——
显示窗口。
1
28
——
隐藏窗口。
例如:
setwindowpos(windowhandle
,
-1, 0, 0, 0, 0, 3)
,取
3
时
cx
、
cy
、
x
和
y
设定都将被忽略。
4.1.11
用
altools.
u32
函数动态改变屏幕
分辨率,让课件实现全屏播放
一个外
挂函数
——
altools.u32
,
这里面有改变分辨率和隐藏任务栏的函数。通过程序来改变分辨率和隐藏任务栏而实
施全
屏演示。不过还要在程序退出的时候改回原来的分辨率。下面我们就来看一看具体实现的办法。
< br>
一、加载函数
打开
authorware
,保存文件为
“
改变屏幕分辨率
.a7p”
。按【
ctrl+shift+f
】快捷键打开函数框,在
“
分类
”
里面选择
“
改
变屏幕分辨率
.a7p”
p>
,单击【加载】按钮,选择
altools.u32
,加载里面的
“alchangeres”
函数,用同
样方法,再加载
“alhidetaskbar”
、
“alshowtaskbar”
两个函数。先说明一下这三个函数的作用
:
1
)
al
changeres
:改变屏幕分辨率的函数,基本格式为
“a
lchangeres(width,height,bitpp)”
。
2
)
alhidetask
bar
:隐藏任务栏。
3
)
alshowtaskbar
:显示任务栏。<
/p>
二、编写程序
1
)拖动一个计算图标到流程线上,命名为
“
初始化
”
,打开并输入以下语句:
userscreenwidth=screenwidth--
保存用户监视器的
宽度
<
/p>
userscreenheight=screenheight--
保存用户监视器的
高度
userscreendepth=screendepth--
保存
用户监视器的颜
色深度
alhidetaskbar()--
隐藏任务栏
alchangeres(640,480,32
)
--
改变屏幕分辨率
r
esizewindow(640,480)--
调整窗口大小
2
)将整个课件作为一个整体放在计算图标
“
初始化
”
下。现在我们用一个等
待图标来代替。
3
)再拖动一个计算
图标到流程线上,命名为
“
退出
”
p>
,打开并后输入以下语句:
alshow
taskbar()--
显示任务栏
alchangeres(userscreenwidth,userscreenheight,user
screendepth)--
恢复使用者原来的分辨率
quit()--
退出
运行程序,这时我们可以看到,在运行初期已经改变了屏幕分辨率,而且是全屏播放。当退出时,又改
回到原来的分辨
率。
4.1.12
用
midiloop.u32
函数播放
midi
声音文件
authorware <
/p>
7.0
支持的声音文件格式仍然有一些限制,只有
mp3
、
aiff
、
pcm
、
wave
、<
/p>
vox
、
swa
扩展后缀名的文
件才可直接导入到
authorware
程序中,
但还是不支持
midi
文件的直接使用。
我们知道
midi
文件使用的是数字乐器,
换句话说,
midi
文件并没有真正地记录了音频信息,
而是像乐谱一样记录了各种乐器的和
声和音高节奏,
具体的演奏任
务由声卡所带的数字乐器完成。<
/p>
midi
音乐有着体积信息小的特点,而且不会与
wav
声音通道冲突,因此,在进行多媒
体开发时经常
用来做背景音乐,但
authorware
并不直接提供对
p>
midi
声音文件格式的支持,怎么办呢?别急,
< br>authorware
提供了外部函数的接口可以解决这个问题:利用第三方的<
/p>
ucd
外部函数,我们可以实现对
mid
i
声音文件
的支持。下面我们就一起来制作两个关于
midi
背景音乐循环播放的范例吧!
1
)循环播放
midi
背景音乐
在这里我们要实现的目的是让
midi
背景音乐循环的播放,
具体思路是通过导入
authorware
的外部函数
midilo
op.u32
相关的两个扩展函数,实现对
midi
背景音乐的循环播放。
在介绍范例前,我们简单
介绍一下
midiloop.u32
的相关扩展函数:
result:=loopmidi(file)
< br>这个函数的功能是对程序指定的
midi
音乐进行循环播
放,直到用户中止为止。其中,参数
file
就是用户自行指定
的外
部
midi
文件,当然,这里指定
的
midi
声音文件并没有导入程序内部,只是存在一种相当于
链接的关系。
result:=stopmidi()
p>
这个函数的功能是停止当前正在播放的
midi
音乐,参数为
void
型。
p>
2
)程序的流程图如图
4-10
所示。
图
4-10
播放
midi
音乐流程图
3
)操作步骤介绍如下。
①新建一个文件,并调入外部函数
midiloop.u32
的相关扩展函数,
loopmidit
和
stopmidi
。
②
加入一个计算机,设置运行窗口的大小,计算图标的内容为:
resizewindow(320,240)
——
resizewindow
是一个系统函数,设置窗口的大小
stop:=0
——
s
top
为自定义变量,用来控制
midi
。
loopmidi(filelocation^
——
程序开始播放
midi
< br>背景音乐。
③设置对
midi
音乐的开关控制以及程序的退出。分别建立三个
button<
/p>
按钮响应交互,返回类型设置如图
4-16
所示。
在
“
暂停
”
按钮响应交互计算图标里输入代码:
< br>
stop:=1
stopmidi()
在
“
播放
”
按钮响应交互计算图标里输入代码:
if
stop=1 then