vb.net与FLASH的完美结合

(一)   在VB.net中播放Flash动画

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

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

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

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

 ShockwaveFlash1.Movie = “D:\test.swf” '这里一定要写绝对地址,其实只要把FLASH文件放到你程序的bin目录里,生成后自然变成相对路径  

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

 ShockwaveFlash1.Menu = False

 ShockwaveFlash1.Playing = True

 
其中,ShockwaveFlash1.Movie是用来指定你要播放的Flash动画的目录;ShockwaveFlash1.Menu是用来指定是否在Flash动画播放中封闭右键菜单,True为能够显示菜单,False为封闭右键菜单;ShockwaveFlash1.Playing = True是让动画播放。
(二)   在Flash中控制VB.net程序实现交互

 

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

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

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

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

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

on (release) {

    fscommand ("Send Action");

    //发送Send Action这个命令

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

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

3.  在窗体上双击Shockwave Flash控件,进入ShockwaveFlash1_FSCommand事件中,在此事件中加入:

If e.command = "Send Action" Then

MsgBox("Flash与VB.net成功结合了!", vbApplicationModal, "成功了!")

'当接到Send Action命令的时候

'这里加入你需要的程序

End If


 

其中,ShockwaveFlash1_FSCommand这个过程是专门用来接收Flash发送的FSCommand命令的,其中第一个参数command就是与Flash发送过来的命令相对应的,当其一致的时候,则执行后面的程序(本例中是弹出MsgBox)。
0
0
(请您对文章做出评价)
« 上一篇:MSGRID的填充
» 下一篇:一个中国佛文化的故事
posted @ 2005-02-07 14:20 Aowind 阅读(10452) 评论(33)  编辑 收藏 网摘 所属分类: 学习日记

  回复  引用    
#1楼2005-02-07 17:55 | 王Sir
呵呵,写得好!

-------------------
微软技术爱好者QQ群(群号:118-931)

  回复  引用    
#2楼2005-02-08 10:09 | 轻剑傲风
主要是一直在找做出另类好看的软件界面的方法,也就找出了这样一种解决之道。
  回复  引用  查看    
#3楼2005-02-12 21:45 | 小新0574      
哪里有关于fscommand的资料吗?上次去micromedia的官网没找到
  回复  引用    
#4楼2005-02-23 00:09 | 差沙
现在就别用这个了,flash不是有webservice了么?
而且还有flex了,都是干这个的。

  回复  引用  查看    
#5楼[楼主]2005-02-23 09:19 | 轻剑傲风      
FLASH也有WEBSERVICE?
晕,好久没有弄FLASH了,都不知道变成什么样了
看来得去找点之方面的东东来看了,谢谢呀!

  回复  引用    
#6楼2005-03-09 16:30 | wei
为什么传给了人家,人家是看不到FLASH的?请教..QQ:83001170
  回复  引用  查看    
#7楼[楼主]2005-03-09 16:58 | 轻剑傲风      
因为FLASH不是直接加入到EXE文件中的,而是用链接方式显示在EXE窗体上的,换言之,FLASH文件是单独存在的,也就是要将FLASH和EXE文件一起传给对方,放在相应的目录内,对方才能看到的。
  回复  引用    
#8楼2005-03-29 21:45 | 必填
还没有试过,不过Flash能结合进来Windows程序的界面绝对有大前途的,很有想象空间啊
  回复  引用    
#9楼2005-06-03 14:37 | jasmine
现在我遇到一个问题就是在加入的FLASH后,vb.net在播放这个flash时会跳过第一帧直接运行第二帧,我的flash中的退出按扭也没有起作用,退不出来!
  回复  引用  查看    
#10楼[楼主]2005-06-03 14:54 | 轻剑傲风      
这个问题并不是VB加入后造成的,你可以先看看你的FLASH里的ACTION是否正常,最好在第一帧做一个STOP()。
有关退出的问题,我是想知道你这个退出是实现的什么功能?只是关掉FLASH嘛?那行,就要在VB里写上隐藏这个FLASH控件的处理过程,要记住你这个FLASH是在WINFROM里运行的了,不是在IE里运行的呀!所以你这个退出到底是要实现什么功能呢?

  回复  引用    
#11楼2005-06-04 10:31 | 李波
问问:怎么样在网页中加入能用FLASH控制VB的录音程序!
我想了好长时间 找了好多资料都将不能搞定!

请指教!@#¥%……&


我很着急!

  回复  引用  查看    
#12楼[楼主]2005-06-04 18:33 | 轻剑傲风      
首先这个录音程序是运行在服务器端还是客户端?当然,在服务器端是很不好直接采集客户端的信息的。在服务器端的话,应该把语音程序做成一个服务性质的程序,由FLASH在网页里发出FSCOMMAND命令,再由网页脚本来处理相应命令,调用录音服务功能。
如果是在客户端的话,嘿嘿,还不好想呢!只能说要知道你的具体细节再分析,大概思路在这里吧,可能还没有现成的这样应用的实例,当然可以下载别人的网页版的语音聊天室分析一下。
它们是在网页上加入一个BUTTON,按下去后启动录音,那么我们可以用一个FLASH的FSCOMMAND命令来触发一个事件,调用BUTTON_down的事件处理过程就行了。也就是说用一个FSCOMMAND的触发的事件来替代Button_down的事件处理过程。
当然如果页面是.net的,我想这是很好实现的。

  回复  引用    
#13楼2005-06-06 11:24 | jasmine
谢谢!flash中的每一帧后都有一个stop();在单独运行这个flash的时候,flash是从第一帧开始运行的,且在第一帧处停顿下来;可是加入到vb.net 中后它在第一帧处就不停顿,它会在第二帧处停下来.
另外,flash中的那个退出按钮的作用就是退出这flash,在加入到vb.net之后的作用就是用它来控制vb.net的,意思就是用flash来控制vb.net!

  回复  引用  查看    
#14楼[楼主]2005-06-07 08:22 | 轻剑傲风      
第一个我做的结果是能在第一帧停,没有问题呀!不知道你的是怎么回事了!
第二个问题,也就是你是用来控制更个退出的吧!那就应该用这个按钮发出一个on (release) {

fscommand ("end");

//发送Send Action这个命令

}


在vb.net里的处理时就用
If e.command = "end" Then

Application.exit
End If

这样就能搞定了!


  回复  引用    
#15楼2005-06-07 09:28 | jasmine
thank you very much!我的问题昨天我已解决!
最后一个问题我用的是:
if command="quit" then
close()
end if

  回复  引用    
#16楼2005-06-22 16:03 | whitewizard
还是vb6中简单阿
  回复  引用    
#17楼2005-06-24 11:27 | 驴行者[未注册用户]
各位知道VB能控制Flash函数吗?
  回复  引用    
#18楼2005-09-13 17:03 | 不要问姓名[未注册用户]
也不知是谁抄谁的,怎么好多文章都一样,举例都一样.想找一点新鲜的都难.
  回复  引用    
#19楼2005-11-28 20:19 | datafarxxw[未注册用户]
flash与vb6结合的时候,如果在ShockwaveFlash1_FSCommand的事件中需要执行一个比较费时的操作时,为了使程序不假死,用了Doevents 语句释放控制权,但这样做了以后,发现每次点击Flash的时候都会收到两次相同的命令(即每点一个FLash按钮会触发两次ShockwaveFlash1_FSCommand事件),请问高手们,如何解决啊 ?
:( !!!????!!!

  回复  引用  查看    
#20楼[楼主]2005-11-29 08:58 | 轻剑傲风      
其实可以建议在执行比较费时的操作时用线程处理,嘿嘿!
  回复  引用    
#21楼2006-01-12 14:33 | 常浩[未注册用户]
你好,我想问一下,下面的具体情况能否实现,例如:一个养殖场有很多的牛,我想在地图上显示出每头牛的具体位置和其详细信息,预先会定义好了每种牛的FLASH(注:每个种类都有很多的牛分步在地图上,但是每个种类只能定义一个FLASH的样子)
  回复  引用    
#22楼2006-01-31 15:33 | fanflash[未注册用户]
那VB怎么传数据给FLASH呢,要VB能传数据给FLASH,FLASH也能传数据给VB这样才算是交互吧

  回复  引用    
#23楼2006-03-03 20:05 | 冷灰[未注册用户]
不行啊,打开后什么都没有,好像没有加载Flash文件,我的路径都是正确的阿
  回复  引用    
#24楼2006-03-10 11:32 | Godmark[未注册用户]
傳遞給flash的方法是
控件.SetVariable("變量","參數")

  回复  引用    
#25楼2006-03-29 21:36 | 博源[未注册用户]
这个控件和action我早在DELPHI里用过了,N年前的事情。
  回复  引用    
#26楼2006-04-21 13:56 | 方法[未注册用户]
问个问提,我在第一步导入Shockwave flash.ocx时 报错,说 导入错误, 请确定什么属性的,英文不好, 但是 我可以在vb里做flash 没有问题的。谢谢了 指导下。
  回复  引用    
#27楼2006-04-30 13:35 | jiasijia[未注册用户]
关键是VB怎么返回数据给FLASH
  回复  引用  查看    
#28楼2006-05-28 20:01 | 种子张&Asp.net      
现在同时做flash,vb.net的同志好像不太多,大家要不要组一个群啊.哪位高手带个头吧.
  回复  引用    
#29楼2006-09-09 12:47 | jms[未注册用户]
我想问一下高手们: 在VB下加载FLASH后直接鼠标单击或双击FLASH画面能不能进到VB的下一页也就是说不用交互按钮用鼠标事件进入VB的下一页,在此谢谢了!
  回复  引用  查看    
#30楼[楼主]2006-09-14 09:09 | 轻剑傲风      
FLASH加载后是一个对像,你只要在这个对像的单击或双击事件里写进 入VB的下一页的代码就行了呀!
  回复  引用    
#31楼2006-10-31 09:41 | rubooz[未注册用户]
刚开始学习这个,如FLASH中不同的影片剪辑中使用了相同的变量名称,比如name,那vb在传数据给flash的时候会冲突??
  回复  引用    
#32楼2007-03-03 17:16 | 优[未注册用户]
我想问问,你们提到的在flash按钮,是指得独立于vb,做的flash里建立的吗
还是这个flash就是用vb做得阿

  回复  引用  查看    
#33楼2008-09-29 13:14 | 思念      
为什么我添加工具添加不上呢?
在工具栏内不显示。