flash 与 vb 也能交互啦!

 

其实这是一个很容易解决的问题,可惜这个问题属于两不管的境遇,VB的书没有,FLASH的书也没有,对于不懂FLASH的VB写手就是个问题。

一、将FLASH插入VB窗体

在VB工程/部件的列表里找到shockwaveflash,添加即可在工具栏里找到FLASH控件

,添加之。。。

该控件有两个值得注意的属性,movie和playing,movie指代FLASH文件,扩展名.SWF,强烈建议采用相对路径给其赋值,例如:

Dim strpath AsString

strpath = App.Path

If Right(strpath, 1)<> "\" Then

strpath = strpath& "\"

End If

shockflash.Movie =strpath & "ping.swf"

而playing为是否自动播放,默认为false,记得改成true哦!

现在你可以用FLASH做为你的闪屏啦!

二、实现交互

首先,打开FLASH,要将做好的FLASH按纽选定,在onrelease事件里编写代码如下:

{

fscommand("string");

}

这里的string为任意字符串,传递给VB的就是这个字符串。让我们启动VB,在shockwaveflash控件就会多出fscommand事件,FLASH里的字符串已经赋给了参数command,假如我们有多个按钮做为工具栏,那么我们就可以通过判定command来编写相应的代码。以下是我的实例:

Private Subflashmain_FSCommand(ByVal command As String, ByVal args As String)

Select Case command

Case"cmdshop"

Frmkaitai.ShowvbModal

Case"cmdvip"

frmMbEmit.ShowvbModal

Case"cmdhome"

FrmJiezhang.ShowvbModal

Case"cmdbill"

Frmtuitai.ShowvbModal

Case"cmdjiankong"

FrmXiaofei.ShowvbModal

Case"cmdhelp"

frmAbout.ShowvbModal

Case"cmdexit"

End

End Select

End Sub

三、应用

VB界面的恶心是天人共愤的,利用FLASH就可以很好的弥补这一点。FLASH美化界面的能力使得FLASH与各种编程工具间的交互变为FLASH推广的契机。

(一) 在VB中播放Flash动画

 

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

 

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

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

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

 

 

Private SubForm_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程序中,我们就是利用的Shockwaveflash控件的FSCommand()过程来完成这一通信过程,实现信息发送的功能,并且根据发送出来的不同的命令及参数来实现对VB程序的控制。

 

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

 

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

 

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

 

on (release) {

 

fscommand("Send Action");

 

//发送SendAction这个命令

 }

 

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

 

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

 

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

 

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

 

Private SubShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)

 

If command ="Send Action" Then

 

msg =MsgBox("FlashVB成功结合了!", vbApplicationModal, "成功了!")

 

'当接到SendAction命令的时候

 

'这里加入你需要的程序

 

End If

 

End Sub

 

AS中的FSCommand方法

为了能够与非FLASH环境的外部应用程式通讯,AS里提供了一种方法,FSCommand(命令符,参数).

这个方法有两个参数,第一个参数是你打算执行的命令符,第二个参数是你打算传递给执行命令符时所需的参数,如果有需要参数的话.

这一方法能在FLASH中随处被调用,在一个按钮上,在播放FLASH的时候,或者其它你想要呼叫外部代码的任何地方.以下的示范我们讲这一方法置放于一个按钮事件上.

Flash.ocx(SWFlash.ocx)ActiveX控件.

为了能够在VB中播放flash影片,你需要加载一个控件到VB工程中去.

点击"Project",然后点击"Components".(汉化版VB标签为:工程->部件,打开控件选择面板的热键为CTRL+T)然后找到"ShockwaveFlash",并选中.这一文件名连接着名为Flash.ocx(SWFlash.ocx)的控件.

这一控件在你安装MacromediaFlash MX 或者 Flash播放器的时候便自动安装在你的系统当中了.它是一个全特征型的,可由使用微软COM/ActiveX技术的VB程式控件界面的ActiveX控件.此控件能够播放FLASH影片,FLASH影片与VB程序交互的核心部分.

在VB程序中播放FLASH影片

有一个基本原则你必须清楚,那就是:能在VB中通过FLASH控件播放FLASH影片.这里的".swf"格式的Flash影片是正常的,由flash本身生成的一般的flash影片.相同的内容,却能在你的VB程序里再生.

FSCommand事件

这个FLASH插件中有几个方法和事件,这些你都可以通过VB对象查看器找到.而这其中又数FSCommand事件最为重要.正如你可能想到的,这个和AS中的FSCommand方法有相互联系.当你在AS中调用FSCommand方法,FLASH影片又是在VB中的FLASH插件中播放的时候,在VB程式中就会产生一个FSCommand事件了.如果你为VB中的FSCommand事件编写一定代码的话,这些代码将会被执行.

Set/GetVariable方法

这两个方法是用来做VB向FLASH影片回馈工作的.

 

1.激发FSCommand方法的按钮

2.在VB中拦截FSCommand事件.

3.调用setVariable方法,设置FLASH影片中的变量值

4.FLASH中的动态文本框获得新值.

创建例子的FLASH文件

打开FLASH程序.创建一个新文件,添加一个动态文本框和一个按钮入场景中.文本框实例名为:sampleField,文本变量名为:sampleFieldVar,按钮实例名可不用设,按钮上加上AS代码:

on(press) {

fscommand(“setvalue”,“Sample Value”);

}

现在保存这个FLASH文件到指定目录,然后再生成影片.这样一个简单的FALSH影片便在那个保存FLASH文件的目录下生成好了.这便是我们准备加到VB程序中要用到的FLASH影片.

编写VB-FLASH交互

插入一个FLASH插件到VB表单中,为之命名为swfFlashScreen.现在使用下面的方法加载刚刚的FLASH影片到这个组件.

CallswfFlashScreen.LoadMovie(0, filename)

你也可以在插件的属性面板中直接指定加载文件的地址.

第一个参数表示加载影片的级别,这里设成0,表示根目录级别.

当插件中的FLASH影片中激发了FSCommand事件量,插件便会自动拦截FSCommand事件.根据参数决定VB要做的相关操作即可.现在我们能够从FLASH中传递命令和参数到VB中了.然后返回又应该做什么呢,也就是说,如何把信息反馈到FLASH影片中呢.我将会向你描述我是如何把值从VB传递到FLASH中的.

在先前的FLASH文件中,我们已经设定了一个实例名为sampleField的文本框,并将其文本变量设为 sampleFieldVar.为了能改变这个文本框中的值.我们使用下面的方法:

CallswfFlashScreen.SetVariable("sampleFieldVar", value)

第一个参数表示文本框变量的变量名,第二个值表示要赋予的值.当你按下FLASH中的按钮之后,文本框会立即更新.

VB中的代码:

Private SubswfFlashScreen_FSCommand(ByVal command As String, ByVal args As String)

If command ="setvalue" Then

CallswfFlashScreen.SetVariable("sampleFieldVar", value)

end if

end sub

 

从VB发布通知到FLASH

从FLASH中呼叫VB中的方法可以通过FSCommand这一"接口"轻松实现.而反过来,由VB向FLASH发布呼叫通知却没有直接的方法.

假设FLASH通过FSCommand呼叫VB做一些操作,当VB把这些操作执行完毕的时候,要向FLASH反馈一个消息告知操作完成.但是VB却不能直接呼叫FLASH中的方法,但是我们可以使用数据传递机制,(即setVariable)来模拟呼叫方法.

我们通过FLASH等待某一特定变量值来实现上述呼叫过程.在FLASH中设定一个循环监听器,监听从VB传来的被改变的特定变量的值.VB将先前的操作完成后,执行setVariables方法将FLASH中正被监听着的变量赋以新值.这时.正在监听的FLASH判定该变量值是否改变.如果改变,即说明,VB已经执行完它的操作.换句话讲.也可以在这里设里消息筛选.根据该变量的不同的值,呼叫FLASH中不同的方法,从而间接地实现VB呼叫FLASH中方法的目的.

举一个例子说明.放一个动态文本框在主场景.设其默认值为undefined.这时,我们呼叫VB,让其做我们想要的操作,当操作完毕时,VB将文本框里的值改变,即,将文本变量值改变.而在FLASH这边,已经设定好的定时器正以某种频率监听着该文本变量的值是否改变.如果改变,说明VB执行完毕.清除定时器.再呼叫FLASH相关的方法,当然,如果有必要的话.

例子:

//创建一个变量名为VBCalling的动态文本框

// 这个方法用于呼叫VB,将同时开始执行keepWaitingForResponse方法.监听变量值是否经由VB改变.

functionCallVBFunction() {

fscommand(“Test”,“Test”); // 呼叫VB中的方法

keepWaitingForResponse();// 呼叫FLASH中的方法

}

//该函数在VB未收到数据改变的命令是不会向前执行,将一直处于监听状态

functionkeepWaitingForResponse() {

intervalID =setInterval(

function () { //该函数每过100毫秒执行一次,直到定时器被清除

if (VBCalling !=undefined) {

VariableReturned(VBCalling);

}

}, 100);

}

//该函数只在监听发现变量值被VB改变的时候被执行.

functionVariableReturned(value) {

clearInterval(intervalID);// 清除定时器,结束监听

//你可以在这里放上其它FLASH中的方法,如果有必要的话

}

KAN:

可以说,FLASH正是利用了FSCommand这一"接口"来实现与VB程序的交互.既能让FLASH调用VB中的方法,也能让VB轻松控制FLASH影片的播放.

更多FLASH插件方法,请在VB工程中按F2,再找到shockwaveFlash插件.你会发现有好多关于桢控制的方法,以及一些关于加载的方法.

用VB做自己的可以拖动播放的FLASH播放器,也就变得容易了.

更重要的是,结合VB的强大功能,更可以轻松实现本地指定路径的文件存储.联网交互功能等等.听起来都是蛮不错的哦.

我只翻译了源文档中的与VB-FLASH交互比较关键的部分内容.其它内容,如果各位有兴趣,可以自己琢磨琢磨.

需要Flash4/5的支持,安装OCX控件

 

1)在Flash里的Action中,对按钮的OnRelease()事件设置FSCommand命令

 

在FScommand的对话框里有两栏:Command和Argument,这里面所填的内容将被传到调用的函数里作为参数。一般说来:Command栏填的是你想调用的函数名;Argument栏则填上函数使用的参数。

如:Command栏填“call_alert”;Argument栏填“Helloworld”

 

VB 中:

SubFlash1_DOFSCommand(Command,Argument)

中,可以检查两个参数,让后在Showanother windows

 

VB中有这个专门控件的

 

用VB播放Flash动画

 

Flash是一种矢量格式的动画文件,可以包含动画、声音、超文本链接,而文件的体积却很小。特别适合在网页中使用。

 

其实我们还可以用VB来实现同样的效果:

 

打开VB5后新建一个工程,在工具箱上单击右键,选择部件,在部件窗口中选择ShockwaveFlash,然后“确定”,Flash控件就加载到工具箱中。

 

双击Flash控件使它加载到我们的窗体中,调整一下大小,在属性框中设置movie属性为Flash的动画路径,如:C:\vbwj\a.swf,设置scalemodel属性为2quality属性为1。具体的属性设置可按下表自己设定。

 

属性    值   含义

 

Scale model

0

全部显示

 

1

随控件大小变化

 

2

缩放至控件大小

 

Quality

0

低分辨率

 

1

高分辨率

 

2

自动降低分辨率

 

3

自动升高分辨率

 

Loop

True

循环播放

 

False

不循环播放

 

Playing

Ture

播放

 

False

停止

 

Movie

要播放的动画路径

 

MenU

Ture

显示快捷菜单(运行时,在动画上点右键)

 

False

不显示快捷菜单

 

 

双击窗体,在form_load()中加入:

 

shockwaveflash1.playing=ture

 

好了现在就可以运行了。(注意:编译后的可执行文件不包含动画文件)如果动画里加上动态按钮,配合鼠标位置判断,就可以作成动态工具条或动态菜单了。

 

 

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值