用PowerBuilder制作多媒体动画

Author: 卢群 Date: 2000年 第21期

  在枯燥乏味的应用程序界面上嵌入动感十足的图片不仅能为程序增色不少,而且还可以吸引用户的注意力。PowerBuilder(以下简称PB)中有图片控件,但是只能插入静止的位图图片(.BMP),那么如何使图片在PB窗口中动起来呢?下面就来介绍用PB制作多媒体动画的方法。
#1  一、实现原理
  通过PB工具栏的控件按钮在窗口中放入一个图片控件,因为在动画序列的每一阶段都需要一幅标准的位图图片。通常在应用程序的请求之下,Microsoft Windows会在固定的时间间隔发送事件消息。利用PowerBuild的Timer()函数,可以打开这个定时器,从而窗口可在每个间隔内收到一个Timer()事件。当窗口收到消息时,改变图片控件的属性以显示动画系列中一幅不同的帧。当窗口关闭时,须告知Windows停止发送Timer事件。
#1  二、操作步骤
  1.打开Application画板,创建一个新的应用库和相应的应用程序对象,分别叫做animate.pbl和animate。当提示是否生成应用程序模板时,回答No。
  2.使用Windows画板创建一个新窗口。
  点击Windows画板,弹出Select Windows窗口,点按“New”按钮建立一个新窗口。在新建窗口上按右键,选弹出菜单的“Properties...”,弹出Windows属性窗口,点General页,在Windows Type的下拉列表中任选一种类型,如Response,接着设置窗口的属性Visible和Enabked为TRUE,其它属性都设为FALSE,最后以w_animate为窗口名存盘。
  3.在窗口中添置图片控件
  点按Picture控件按钮,并将其命名为P_1并设置File Name为“lxscr000.BMP”。为了在显示位图时得到更好的执行效果,设置图片控件的OriginalSize属性为TRUE。
  4.为w_animate窗口定义实例变量,以便程序在脚本的执行期间内用来保存值。
  点击菜单declare中的Instance Variables菜单项,作如下变量声明:
  //所设的变量是一个数组,其中包含了为生成动画而显示的每一幅位图的文件名,它将为窗口提供一系列图像并循环显示
  string is_bitmaps[]={″lxscr000.bmp″,″ lxscr001.bmp″,″ lxscr002.bmp″,″ lxscr003.bmp″,″ lxscr004.bmp″,″ lxscr005.bmp″}
  //用于跟踪当前的位图数,初始值为1指示第一张图片
  integer ii_picture=1
  //可得到的最大位图数
  integer ii_maxpicture
  5.初始化程序,以使窗口得到循环显示的位图数,同时设置要显示的第一幅位图以及安排Timer事件的发生。
  在w_animate的open事件中编写如下代码:
  //获取数组变量中的最大位图数
  ii_maxpicture=UpperBound(is_bitmaps[])
  //设置位图显示初始值
  p_1.picturename=is_bitmaps[ii_picture]
  //每秒钟给w_animate窗口发送一个Timer事件
  timer(1,this)
  6.当窗口收到一个Timer事件后,它应该前进到序列中的下一帧。为Timer事件编写如下脚本。
  if ii_picture=ii_maxpicture then
  ii_picture=1
  else
  ii_picture=ii_picture+1
  end if
  p_1.picturename=is_bitmaps[ii_picture]
  7.在窗口的Close 事件中编写如下代码使当窗口关闭时关掉Timer事件。
  Timer(0,this)
  8.编写脚本实现鼠标单击w_animate窗口时关闭该窗口。
  在w_animate的clicked事件中键入close(this)。
  9.编写脚本实现按任意键时关闭该窗口。
  在w_animate的key事件中键入close(this)。
  10.打开Application画板,按下面的方式处理应用程序的Open事件。
  Open(w_animate)
  11.保存并运行此应用程序。
#1  三、编程要点
  1.Windows能够以每秒钟18次的速度发送Timer事件,并支持16个定时器同时运行,当不再使用时将定时器关闭是一个很好的习惯。
  2.如果你想加快显示速度,可将第五步中Timer()函数的第一个参数改小,如0.5,反之改大。
  这样在屏幕上就可得到一幅生动的多媒体动画。你可以根据自己的喜好随意更改循环显示的图片,也可把上述程序应用于任何窗口界面,为你的应用程序界面增添动感。示例中多媒体动画将一直持续显示,直到你用鼠标点击窗口或按下任意键。