Flash中如何通过按钮在本地打开视频
|
大家的问题的意思大概是:在本地,怎样在Flash里通过点一个按钮,用视频播放器打开一段视频(如RM电影) 这里涉及三个程序:Flash,视频播放器.然后,由于Flash无法直接把文件名的数据传给播放器,所以还需要一个中间的程序来通信(笔者用VB写了一个). 现在先把整套文件帖上来 点击浏览该文件下载解压后,运行里头的open.exe,点击里面的按钮,就可以打开相应的视频了(由于暴风影音播放器本身的问题,文件包的路径不要包含空格). 接下来会把教程写给大家. 工作原理: 在MX或以上版本里,可以通过fscommand调用一个应用程序,但是,由于安全性的问题,fscommand的exec命令中,调用的应用程序不可以带有命令行参数,对于命令行参数,可能有些人不是很了解.下面给大家解释一下命令行参数的问题. 在Flash3~5里,我们可以通过如下办法用GreenMPC.exe程序打开一个文件a.rm 现在普遍都用7或以上版本了.fscommand("exec","GreenMPC.exe a.rm")失效,只能用fscommand("exec","GreenMPC.exe"),而这是达不到目的的,因为它只能打开GreenMPC.exe,而不能用GreenMPC.exe打开a.rm. 所以,目前最大的问题有两个: Flash把变量存在于内存里,至少对于大部分Flash设计者来说,在别的程序里是没办法获得的.所以,要尝试把a.rm存到硬盘里. 那是否就没办法,"山穷水复疑无路"了? 第一个问题解决了.下面是第二个问题. 这样,问题就完全解决了,下面说说具体做法 下面说说具体做法 1 因为涉及多个文件,所以第一步先把文件放好. 1.1 新建一目录,你以后的文件都在此目录里. 1.2 在该目录下新建一Flash文档. 1.3 由于6或7的版本都只能调用fscommand目录下的程序,所以,新建一个文件夹fscommand,把播放器和视频文件放进去(注意,在放播放器的时候,跟播放器有关的系统文件都要放进去. 1.4 放入中间程序,文件在楼顶的压缩包里面的fscommand文件夹下,名为openMovie.exe. 该程序是笔者用VB写的,里头的代码如下(因为这是讨论Flash的地方,所以不作详细解释,读者有兴趣的话,可以参考跟VB有关的书籍). Private Sub Form_Load() ’子过程,当程序窗体加载时运行
On Error GoTo OpenErr ’发生错误后,程序结束 Dim FilNam As String ’定义FilNam变量 If App.PrevInstance Then End ’为防止运行时出现混乱,所以只允许运行一个实例 FilNam = Clipboard.GetText ’把剪贴板的数据储存在一个名为FilNam的变量里. Clipboard.Clear ’清空剪贴板 Shell "GreenMPC.exe " & """" & FilNam & """" ’运行GreenMPC.exe,并往把文件名以命令行参数的形式往播放器传递,让播放器打开FilNam. OpenErr: End "程序结束 2 文件放好了,下面编辑Flash文档 2.1 新建一个元件Button,是用来打开视频的, 2.2 在里头添加代码 on(release){
System.setClipboard("a.rm") //这句话用于将文件名的数据传到剪贴板, fscommand("exec","openMovie.exe") //剪贴板获得数据后,可以打开openMovie.exe了,让该程序来获取剪贴板数据,传输给GreenMPC.exe } 2.3 现在,测试影片,你现在是看不到任何效果的. 2.4 但是,你现在如果打开记事本,"粘贴"一下,你会发现粘贴出来的是a.rm,可见,剪贴板已经从Flash里获得数据了. 2.5 之后的没有运行,是因为fscommand("exec",args)只能在独立播放器里使用(该观点并不完全正确,如果从更大的范围来讲),调试是没效果的. 2.6 在独立的播放器(请使用7或以上的版本)里打开生成的Flash,还是没有反应,为什么呢? 2.7 如果你屏蔽了菜单,那就要在Flash设计模式下生成exe |

点击浏览该文件