VBFlash联合打造你的魅力程序

 

天津 黄兴

 

    在软件开发的过程中,为了提高软件的商品化程度,许多开发人员都在努力使自己开发的程序界面更加的美观,但除了简单的使用图片和底纹,还有没有更好的方法呢?Flash是一种矢量格式的动画文件, 可以包含动画,声音,超文本链接,而文件的体积却很小,在网页上使用Flash可以做出很漂亮动态菜单条。那么Flash可不可以加入到应用程序中而起到美化程序的作用呢?经过一番研究,Flash不仅仅可以插入到程序中起到美化的作用,而且可以通过FSCommand命令与VB应用程序进行交互!也就是说你的应用程序的按钮再也不会是灰灰的那样的死板,而是颇具魅力的动画了!怎么样,动心了吧?那好,随我来一起让VBFlash联合起来,打造我们的魅力程序!

 

(一)   VB中播放Flash动画

    怎样才能在VB中加入Flash动画呢?我们只要使用Flash5自带的Shockwave Flash.ocx这个控件就可以了。方法如下:  

1.  打开VB6.0,新建一个工程,在工具箱上单击右键,选择Components…,在部件窗口的控件列表中选择Shockwave flash,然后确定,Flash控件就被加到工具箱上  

 

2.选择工具箱上的Flash控件,放到窗体上并调整好大小;

3.在Form_Load()过程中加入如下代码:

Private Sub Form_Load()

 ShockwaveFlash1.Movie = “D:\test.swf”   

'这里写上你的Flash文件目录

 ShockwaveFlash1.Menu = False

 ShockwaveFlash1.Playing = True

End Sub

 

其中,ShockwaveFlash1.Movie是用来指定你要播放的Flash动画的目录;ShockwaveFlash1.Menu是用来指定是否在Flash动画播放中封闭右键菜单,True为能够显示菜单,False为封闭右键菜单;ShockwaveFlash1.Playing = True是让动画播放。

好了,按F5看看吧,是不是程序中的Flash动画能播放了?

 

(二)   Flash中控制VB程序实现交互

   现在Flash动画已经能在VB程序中播放了,那么怎么实现在Flash中控制VB的程序从而实现交互式的操作呢?本文的重点也在于此。

    首先我们先来了解Flash中控制VB程序的基本原理:在Flash的ActionScript里面有个叫做FSCommand()的函数,它的主要功能就是发送FScommand命令,例如使动画全屏播放,隐藏动画菜单,更重要的就是可以与外部文件和程序进行通信。而在VB程序中,我们就是利用的Shockwave flash控件的FSCommand()过程来完成这一通信过程,实现信息发送的功能,并且根据发送出来的不同的命令及参数来实现对VB程序的控制。

明白了吧?简单的说,我们就是利用Flash中的FSCommand()函数向VB发送命令,利用Shockwave Flash控件来接受这个命令,从而达到Flash控制VB程序的目的。

好了,现在知道了原理,我们就一步一步来实现吧!

1.  首先要打开Flash5制作一个交互按钮,并在按钮上面加上如下代码:

 

on (release) {

    fscommand ("Send Action");

    //发送Send Action这个命令

}

 

这个命令的作用是当按下按钮后Flash向VB发送出名为”Send Action”的命令。当然,这个命令的名字在实际应用中可以叫做其他的任何名字。

2. Flash导出成为swf文件,如文章第一部分所述插入到VB6.0中,下面就是VB怎么接受这个命令的事情了;

3.  在窗体上双击Shockwave Flash控件,进入代码编辑窗口,加入如下语句

 

Private Sub ShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)

If command = "Send Action" Then

msg = MsgBox("Flash与VB成功结合了!", vbApplicationModal, "成功了!")

'当接到Send Action命令的时候

'这里加入你需要的程序

End If

End Sub  

其中,ShockwaveFlash1_FSCommand这个过程是专门用来接收Flash发送的FSCommand命令的,其中第一个参数command就是与Flash发送过来的命令相对应的,当其一致的时候,则执行后面的程序(本例中是弹出MsgBox)。好了,看看程序运行的结果吧:

 

通过本文你是不是完全掌握了Flash与VB的结合,这里,你只要把Then后面要执行的语句段变为你自己想要实现的程序,那么Flash中的动画按钮就能实现所有强大的VB功能了

快去吧,再也不要那些死板的灰色按钮,加上你的炫目多彩的动画按钮,打造出你的魅力程序

 

 


FLASH工具的秘密——SWF2EXE    sleilei(原作)

 关键字VB/flash/SWF2EXE

 

    在网上我们能下载到很多精彩的FLASH动画,它们通常*.SWF形式的,如果我们的电脑中没有安装FLASH或FLASH播放器,那么它们就无法在我们的电脑中闪耀。这将是一件非常遗憾的事,我们能否自己用VB写一个工具,将SWF形式的FLASH动画转变成可执行(EXE)形式的呢?当然可以啊,下面我们就一起一步一步的去制作这个小工具——SWF2EXE。
    为了编写这个小工具,我们有必要先分析一下SWF形式和EXE形式FLASH文件的基本格式。由于篇幅所限,鉴于网上有很多介绍SWF形式和EXE形式的FLASH文件格式的文章,,我这里仅仅将本程序中所要用到的知识简单说明一下,其他的不再细说,请大家自己参阅相关文章。大家也可使用UltraEdit自行分析。EXE形式文件分为四个部分:FLASH自带的播放器、SWF文件、EXE形式的标识符(16进制表示为56 34 12 FA)和对应SWF文件的大小。
    了解了EXE形式FLASH文件的格式,下面我们就用一步一步的编程实现。

第一步:定义资源文件
    打开VB,建立一个EXE文件。将FLASH5中自带的播放器FlashPla.EXE添加为自定义资源,保存为工程1.res。属性如下:
      类型:"CUSTOM"
      编号:101
      语言:中文(中国)


第二步:创建程序界面()
       控件添加如图一,控件属性默认。


第三步:编写代码
       以下内容为本程序代码部分,比较简单,而且注释也较为详细,相信大家能很容易理解。


Private Sub Command1_Click()
    Const FILESIZE = 376832 '定义生成的播放器部分大小
    Dim exetog As Long '定义EXE形式标识符
    Dim filelong As Long
    Dim copy() As Byte
    copy = LoadResData(101, "CUSTOM") '将资源文件存放在copy()中
    Open Text1.Text For Binary As #1 '打开待转换的SWF文件
    Open Text2.Text For Binary As #2 '创建将生成的EXE文件
    '将播放器以二进制形式写入到中的内容写入文件2中
    For filelong = 0 To FILESIZE - 1
    Put #2, , copy(filelong)
    Next filelong
    '将SWF文件写入到文件2中
    filelong = LOF(1)
    ReDim copy(filelong - 1) As Byte
    Get #1, , copy
    Put #2, , copy
    '写入EXE形式文件标识符
    filelong = LOF(2)
    exetog = 1193046 '1193046是EXE形式的标识符(56 34 12 FA)中的前三个字节56 34 12的十进制值
    Put #2, , exetog
    Seek #2, filelong + 4 '调整文件指针到filelong+4字节处
    exetog = 250 '250是EXE形式的标识符的最后一个字节FA的十进制值
    Put #2, , exetog
    Seek #2, filelong + 5 '调整文件指针到filelong+5字节处
    '写入SWF文件长度
    filelong = LOF(1)
    Put #2, , filelong
    Close #1
    Close #2
End Sub

Private Sub Command2_Click()
    End '退出
End Sub

Private Sub Form_Load()
    '初始化
    form1.caption = "EXE2SWF"
    Label1.Caption = "SWF文件路径:"
    Label2.Caption = "EXE文件路径:"
    Text1.Text = ""
    Text2.Text = ""
    Command1.Caption = "转换"
    Command2.Caption = "退出"
End Sub

http://sl_zyy.y365.com/