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

Authorware综合技巧:运用OLE技术扩展Authorware功能

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

 

(作者:朱诗兵 2001年03月06日 16:45)

  在authorware多媒体应用程序的设计过程中,有时authorware不能实现一些特殊的功能,需要使用ole技术来扩展authorware的功能。

  ole对象的链接与嵌入是引入其它应用程序设计的对象(如文本、图形、数字电影等)到authorware文件里的一种方法。本文介绍authorware中如何调用其它应用程序创建的ole对象,同时给出具体实例说明ole对象的应用。

  ole对象的创建

  打开一个ole应用程序来创建ole对象的具体步骤如下所述:

  1.打开需要插入ole对象图标的展示窗口。

  可以插入ole对象的图标有“显示”图标、“交互作用”图标、“框架”图标等,它们能够插入图形、文本和表格等ole对象。

  2.选择authorware中的“insert| ole object”选单选项,打开“insert object”对话框。

  3.在该对话框中,显示的是当前系统所支持的所有对象类型的列表,我们可以在该列表中选择合适的对象类型打开创建该对象的应用程序。

  如果需要直接引入对象,则可以选择该对话框中的“从文件创建”选项,在该对话框中选择文件,将文件中的内容直接插入到authorware中作为插入的对象。

  插入后的对象,当用鼠标双击它时,会自动打开编辑该文件的应用程序来修改该对象。

  插入的ole对象同其它引入的对象相同,用户可以在展示窗口中改变它的位置和大小。如果想继续修改该ole对象,用户只需要用鼠标双击该ole对象,则authorware会自动打开创建该对象的应用程序进行编辑。

  使用ole对象的实例

  在authorware中嵌入ole对象不但可以在authorware中显示更多类型的文件,而且还同时嵌入了生成这个ole对象的控制方法。下面给出一个具体实例,详细介绍ole对象在authorware的使用。

  1.在流程线上添加一个显示图标,命名为“powerpoint ole”。双击打开该显示图标,选择“insert|ole object...”选单选项弹出的选择ole对象对话框。这里准备直接引入powerpoint对象,选择对话框中的“从文件创建”选项,在对话框中单击“浏览(b)...”按钮选择文件,将文件中的内容直接插入到authorware中作为插入的对象,则把从文件创建的ole对象载入到authorware中。

  单击展示窗口中的ole对象,选择“edit|演示文稿ole object”选单选项。在选项中上面三个选单命令是该ole对象提供的三个动作,选择“attributes”选单命令,弹出ole对象属性窗口。

  这里一定要选择“package as ole object”选项,作为ole对象打包;若不选择该选项,则无法控制该ole对象。知道控制该ole对象的动作名称后,就可以使用前面介绍过的ole处理函数来对该ole对象进行交互控制。

  2.在“powerpoint ole”显示图标下添加一个交互图标,命名为“ole交互”。然后在其右侧放置三个计算图标,分别命名为“放映”、“编辑”和“打开”,并且响应类型都为按钮响应(这里按钮属性为默认状态)。最后双击这三个计算图标,分别输入内容。

  3.保存该文件,然后运行。此时单击“放映”按钮,则开始放映该powerpoint文稿,其效果与在powerpoint环境中完全一样;单击“编辑”按钮,则可以编辑该powerpoint文稿;单击“打开”按钮,则运行powerpoint、打开该powerpoint文稿。这样就实现了powerpoint文稿在authorware中的应用,对于其它类型的ole对象其使用过程与此类似。

  小结

  虽然authorware提供了对各种流行多媒体文件类型素材的导入和显示,但对于不断发展变化的计算机领域,这些支持的文件类型就显得少了一些。因此在authorware中嵌入ole对象扩展了authorware多媒体功能。

authorware视频窗口的放大

在authorware中提供有数字化电影图标,支持avi、mpeg、flc/fli和quick time等格式,但是数字化电影图标不能进行视频窗口的缩放。如果再配合函数和变量,在authorware中就可以方便地实现视频窗口的放大。

利用photoshop等软件,按照视频的尺寸设计好窗口和控制按钮界面,包括:播放、停止和放大三个按钮。 

按照图1所示建立主流程,按钮响应为视频播放。再建立“视频播放”群组的内容(见图1),视频交互的两个按钮响应分别为“放大”和“停止”。

分支图标“视频”下有两个分支“视频1”和“视频1大”,分支图标的设置为将“branch”域设为“to calculated path”,计算表达式中输入“false”,表示两个分支都不经过,而直接向下走。

3. 数字化电影图标“视频1”和“视频1大”均链接同一个视频文件,属性对话诓 “视频1”中“start frame”域中为自定义变量x,“视频1大”中“start frame”域中为自定义变量x1;“视频1”的尺寸为原大小,而“视频1大”为全屏(或所需尺寸)。注意:关于视频播放尺寸的变化有一个技巧,数字化电影图标引入视频文件后运行,当开始播放视频时,按“ctrl+p”暂停,用鼠标单击视频画面,视频画面周围将出现八个控点,用鼠标拉动其中的控点,可以改变其尺寸。同时,其位置也可以改变,尤其是可以用键盘上的箭头键逐个点进行移动,这对于视频画面的精确定位特别有用。

计算图标“视频参数初始化”中输入以下内容:

x:=1

x1:=1

y:=medialength@"视频1"

mediaplay(iconid@"视频1")

表示将“视频1”和“视频1大”两个视频的播放起始帧均设为第一帧,播放结束帧均为视频的长度,然后开始播放原尺寸的“视频1”。

视频交互中的放大响应群组中的内容见图2。计算图标“放大”中输入以下内容:

 x1:=mediaposition@"视频1"

eraseicon(iconid@"视频1")

mediaplay(iconid@"视频1大")

表示将“视频1”的当前帧设为“视频1大”的播放起始帧,擦除“视频1”之后再播放“视频1大”。

“缩小”交互图标下的“缩小响应”设为“hot object”响应类型,即单击“视频1”全屏画面后,使用原尺寸播放。“缩小响应”中的内容如下:

x:=mediaposition@"视频1大"

eraseicon(iconid@"视频1大")

mediaplay(iconid@"视频1")

“停止”中的内容为:eraseicon(iconid@"视频1")。

利用以上的思路,可以进一步实现标准的媒体播放器功能。

用vb6实现隐藏和显示“程序”选单

(中国计算机报 王永耀 2001年10月23日 11:44)

很多系统安全软件如“超级兔子”、“系统优化大师”等,都有一项很酷的功能,就是能够自由隐藏和显示“开始”选单中“程序”各项的功能。假如在我们的程序中也能实现这样的功能,是不是会为程序添色不少呢?其实,我们用vb可以轻松实现这样的功能。

实现方法

其中最重要的一点就是:在win 98中,“程序”项的显示和隐藏可以通过改变c:/windows/start menu/programs(注:这里假设您的windows安装在c盘)文件夹下各文件或文件夹的属性来实现。要隐藏“程序”中的项目,只要相应的文件或文件夹属性设成“隐藏”;要显示项目,也只要去掉相应对象的“隐藏”属性即可。那么,怎样控制文件的属性呢?在vb中,api函数有很重要的作用,可以实现很多强大的功能。其中,getfileattributes函数可以得到文件的属性、setfileattributes函数可以更改文件属性、getwindowsdirectory函数可以得到系统目录,有了这三个api“法宝”坐镇,程序实现就很容易了。当程序启动时调用getwindowsdirectory函数得到系统目录的路径,再用dir函数在一个列表框中列出“系统目录/start menu/programs ”目录下的所有文件和文件夹,并调用getfileattributes函数来获得各文件和文件夹的属性,若属性为“隐藏”,就把相应的列表项勾选(表示此项已隐藏)。在列表框中勾选你想要隐藏的项目,接着调用setfileattributes函数,将勾选项相应的文件或文件夹的属性改为“隐藏”(表示将其隐藏),去掉未勾选项相应的文件或文件夹的“隐藏”属性。这样,一切就搞定了。

程序代码及讲解

首先新建一个project工程,并在form1中建立一个列表框list1,其style属性为:checkbox(复选框式样);四个命令按钮:command1、command2、command3和command4。

界面布局如图所示:

具体程序代码如下:

'declarations部分,声明api函数

private declare function getfileattributes lib "kernel32" alias "getfileattributesa" (byval lpfilename as string) as long

private declare function setfileattributes lib "kernel32" alias "setfileattributesa" (byval lpfilename as string, byval dwfileattributes as long) as long

private declare function getwindowsdirectory lib "kernel32" alias "getwindowsdirectorya" (byval lpbuffer as string, byval nsize as long) as long

'声明变量

dim i as integer

dim lngpath as long

dim tmppath as string

dim strpath as string

dim strdir as string

'定义子过程1,用于显示“程序”选单各项,并确定是否已经隐藏

sub getfileattr()

i = 0

tmppath = space(50)

lngpath = getwindowsdirectory(tmppath, len(tmppath))

strpath = left(tmppath, lngpath) && "/start menu/programs/"

'programs路径

strdir = dir(strpath, vbdirectory + vbnormal + vbhidden + vbarchive + vbreadonly + vbsystem)

'将所有程序项目添加到列表框中

do while strdir <> ""

if strdir <> "." and strdir <> ".." then

list1.additem strdir

i = i + 1

if (getfileattributes(strpath && strdir) and vbhidden) then

'得到文件或文件夹属性,若为隐藏则勾选

list1.selected(i - 1) = true

end if

end if

strdir = dir

loop

'下一个文件或路径

end sub

'定义子过程2

sub setfileattr()

tmppath = space(50)

lngpath = getwindowsdirectory(tmppath, len(tmppath))

strpath = left(tmppath, lngpath) && "/start menu/programs/"

'得到“programs”路径

for i = 0 to (list1.listcount - 1)

if list1.selected(i) = true then

'勾选则隐藏,反之则显示

setfileattributes strpath + list1.list(i), vbhidden

else

setfileattributes strpath + list1.list(i), vbnormal

end if

next i

end sub

private sub command1_click()

call setfileattr

'调用子过程2改变文件属性

end sub

private sub command2_click()

end

end sub

private sub command3_click()

for i = 0 to list1.listcount - 1

'全选

list1.selected(i) = true

next i

end sub

private sub command4_click()

for i = 0 to list1.listcount - 1

'全否

list1.selected(i) = false

next i

end sub

private sub form_load()

form1.caption = "隐藏和显示程序选单"

command1.caption = "确定"

command2.caption = "退出"

command3.caption = "全选"

command4.caption = "全否"

call getfileattr

'调用子过程1,得到文件属性并初始化列表框各项

end sub

按f5运行后,程序下的文件和文件夹会一个不漏地显示在列表框里,再勾选几个,按“确认”,打开“开始选单”的“程序”,刚才勾选的几个不见了。再次运行程序,看看列表框里,是不是刚才勾选的现在依然勾选着呢?那就是告诉你,“程序”选单中已经隐藏了这些项。通过修改文件属性还可以完成许多的功能,如管理“发送”(send to)、“收藏夹”(favorites)等,就看你如何灵活运用了

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