首页 > 网站 > 媒体动画 > 正文

Authorware类和函数:authorware里面运用JumpOutReturn()函数

2024-09-08 19:24:38
字体:
来源:转载
供稿:网友
当你调用jumpoutreturn()函数打开外部文件,authorware本身并没有停下来,而是沿"线"继续运行。如何才能使authorware在播放外部文件的时候,暂停下来呢?也许你会用等待图标,或一个交互按钮,但有时这样满足不了要求。例如,依次连续播放几个外部文件(当然这些文件在authorware本身是不能播放的),当一个文件播完后,返回authorware,另一个文件自动打开播放或向下执行其他内容。

  解决的方法是,调用winapi。winapi有一个getactivewindow()函数,用来返回当前活动窗口的句柄(handle)。比较使用jumpoutreturn()前后当前活动窗口句柄,即可判断外部文件是否播放完毕,authorware是否是当前窗口,再采取相应操作。

  以下介绍这个问题在authorware各个版本中解决方法。

authorware4.0或4.0以后版本

  1.载入getactivewindow()函数:此函数在winapi.u32中,winapi.u32位于authorware程序目录下.在载入winapi.u32过程中,只选择getactivewindow()函数即可,其余不需载入authorware.

  2.在jumpoutreturn()函数前,加入一个变量oldhandle:=getactivewindow(), oldhandle初始值可以不设定.

  3.添加一个等待图标,位于jumpoutreturn()所在计算图标后,无按钮,无响应,仅设定等待1秒.

  4.在等待图标后添加一个判断图标(dicision icon),附一个计算图标于此判断图标,设定判断图标为sequential-repeat until true.

  5.在repeat until true field中输入: handle=oldhandle

  6.当新参数窗口出现时,点击确定,不需输入初始值.

  7.在附着计算图标中,输入:handle:=getactivewindow()

  例子如下:

  以上例子实现的功能是:调用外部播放器scplayer.exe来依次播放文件auto1.scm和auto2.scm. jumpoutreturn()函数参数参考如下:jumpoutreturn(filelocation^".//scrncam//scplayer.exe" ,filelocation^ ".//lotus//auto1.scm /s/h/c ").当auto1.scm文件播放完毕后,播放窗口关闭,回到authorware,又一个junmoutreturn()跳到auto2.scm文件......

  对于authorware4.0以下版本,装载getactivewindow()函数的过程有点不同.装载getactivewindow(),要选择user.exe,user.exe文件位于/window/system目录下,在出现的dll对话框中,有以下几项需要填写,且大小 匦胝?(a).function name field: getactivewindow (b).arguments field: void (c).return field: word.点击"load",getactivewindow()函数已被提取.其余步骤同上.

  目前出现的问题是,当外部文件没有播放完毕时,人工干预使authorware成为当前活动窗口,此时,程序向下继续执行。如果此时再次打开一个外部文件,将会出现两个外部文件窗口,这是我们不想看到的。仔细看一下junmoutreturn()函数会发现,其还有一个可选参数:creator type,具体怎么指定,我没查到。authorware能否指定窗口打开外部程序呢?在此提出,共同探讨。

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