在Flash动画中控制VB程序 兰亭 2001年 42期 我们知道,在VB中,我们利用ShockwaveFlash控件,可以很方便地实现对Flash动画的播放,那么反过来,我们能不能在Flash动画中控制VB程序呢?答案是肯定的,我们不但可以用Flash动画来封装VB界面,并且完全可以通过Flash来控制VB程序的运行。   要让Flash动画控制VB程序,必须先在Flash动画设计过程中加入动作脚本(AtionScript)。Flash的动作脚本中有一个FSCommand函数,它主要功能就是发送FSCommand命令。而在VB程序中,我们就可以利用ShockwaveFlash控件的FSCommand过程来完成这一命令发送功能,并且根据发送出来的不同命令及参数来实现对VB程序的控制。   在Flash中,最简单的方法就是利用按钮来发送FSCommand命令,通过按钮来控制VB程序。在Flash动画设计时,只要在场景中放入按钮,在按钮上点击右键,选择“Actions”,打开“Object Actions”面板,点击在左上角的“+”号,在“Basic Action”中选“FSComand”,在弹出的动作脚本编辑窗口的“Command”中输入动作命令,“Arguments”处输入参数,就可得到这一按钮的动作脚本了。由于这一脚本仅发送命令,并未定义这一命令进行具体的控制操作,因此,把这一动画发布成*.swf格式后在Flash播放器中播放,点击按钮是没有任何反映的。   要实现在Flash中控制VB程序,必须通过ShockwaveFlash控件把动画加载到程序中,下面以一个简单的网络搜索程序来示例:   打开Flash 5,制作一个名为“search.swf”的Flash动画,在场景中放进一个“搜索”按钮和一个“退出”按钮,然后为这两个按钮加入动作脚本。   “搜索”按钮的脚本为:   on(release)}    fscommand(“Search”,“OpenURL”);   }   “退出”按钮的脚本为:   on(release){    fscommand(“Exit”,“Close”)   }   脚本设定了鼠标点击按钮释放后发送“Search”、“Exit”命令,“OpenURL”、“Close”是参数,其大小写在Flash脚本及VB程序中必须保证一致。   在VB中建一标准EXE工程,把“search.swf”动画放在VB工程的同一目录下。在工具箱中点右键,选取“部件”,把ShockwaveFlash控件选出,并把它加入到窗体中,用来显示动画,再用一个文本框(TextBox)来作为文字输入的容器。输入如下程序代码:   Private Declare Function ShellExecute Lib “shell32.dll” Alias “ShellExecuteA” (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long '这一函数用来打开URL   Private Sub Form_Load()   '加载程序同一目录下的search.swf动画   ShockwaveFlash1.Movie = App.Path & “\search.swf”   End Sub   Private Sub ShockwaveFlash1_FSCommandByVal command As String(ByVal args As String)   If command = “Search” Then '如果发出Search命令,执行下列操作   URL = “http://search.chinese.yahoo.com/search/gb?p=” + Text1.Text   Call ShellExecute(Form1.hwnd,“open”,URL,vbNullString,vbNullString,&H0)'打开浏览器到中文雅虎网站进行搜索   End If   If command = “Exit” Then End '如果发出Exit命令则退出   End Sub   运行后在文本框中输入关键字后按动画中的“搜索”按钮,就可进行搜索了,按“退出”按钮则关闭程序。在程序中,我们还可以利用参数(args)来进行控制,如:程序中的If command = “Exit” Then End一句,我们把它改成If args = “Close” Then End,其效果是一样的。同时,我们可以随时通过更换Flash动画来给程序界面换肤,只要各个动画脚本中的命令、参数一致。   Flash有着极强的交互功能,把它强大的ActionScript和VB程序结合起来,一定能让我们设计的程序功能更加强,界面更加完美。