| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
iPlus广告联盟:4
Poco免费提供个人
悠博科技50M/FTP/
华云网络30M/FTP/
四亿美金被购 网
ComboBox应用
利用javascri
Flash Com
XML connector的讨
[翻译]javasc

FSCommand功能详解           

FSCommand功能详解

作者:佚名 来源:作者: jimsons 更新:2007-1-13 20:48:12 错误报告 我要投稿

因为很多人对FSCommand的某些功能都不是很了解
 经常发贴而又得不到有效的回答
 因此我整理了一些资料希望对大家有帮助

 fscommand(cmd_string, arg_string) 
 执行主机端指令。cmd_string指定所要执行的指令名,可为FlashPlayer的 
 指令或浏览器javascript函数。arg_string声明该指令所用到的参数。 
 FlashPlayer的指令有(只能在独立播放器时使用): 
 "fullscreen" 是否全屏播放,参数为true或false 
 "allowscale" 是否允许通过拉伸窗口缩放影片,参数为true或false 
 "showmenu" 是否在播放器显示菜单,参数为true或false 
 "trapallkeys" 是否屏蔽播放器的快捷键(如Esc表示停止播放并恢复 
 "save" 隐藏属性,作用是存变量到文本文件.
 视窗显示),参数为true或false。但Alt+F4系统快捷 
 键(关闭窗口)依然可用。 
 "exec" 运行arg_string所指定的文件。

 ■□ FSCommand语句中的exec命令可以使swf 文件具有读写磁盘的功能 

 这部分内容说的是,FSCommand->exec命令与操作系统进行交互的用法,包括如何打开本地文件,存储文件,建

 立目录,打开浏览器窗口以及其它外部程序。针对MAC机和PC机使用不同的操作系统,FSCommand语句在实际写

 法上不尽相同,本文以PC机为例进行说明。(MAC机中的情况不作翻译) 

 适用于Windows 9X的FSCommand->exec命令详细说明: 
 (注:若要将以下命令句法移植到NT/2000/Me上,不能原封不动的照搬,需要略作改动,请自行实践。) 

 1、存储文件到硬盘 

 有时我们想要在用户的机子上留下cookie,或在用户的硬盘上存储一些其它类型的信息,唯一可行的方法就是

 借助FSCommand,它通过调用用户Windows系统的command.com命令打开MS-DOS窗口实现文件的存储。因为使用

 DOS命令行的方式生成文件,所以MS-DOS窗口是必然要出现的,但在高配置机子上,这个过程一闪而过,用户

 不易察觉。使得该命令生效的前提是,含有这个FSCommand语句的swf文件必须是在本机上运行,而不是通过网

 络来访问。 

 举例:将swf文件中文本输入框(变量名为:textbox)的内容存到一个新创建的和swf文件位于相同目录下的名

 为textfile.txt的文件中,并作为值赋给新的变量var。如下书写FSCommand 语句: 

 打开Action面板选择Normal模式,在语句列表中选取FSCommand语句,转到面板下部: 
 在Command框中填写:exec (不要复选其后的Expression复选框) 
 在Arguments框中填写:"command.com" add chr(9) add "/c" add chr(9) add "echo" add chr(9) add 

 "var=" add textbox add ">textfile.txt" (一定要将其后的Expression复选框打上钩!) 
 若在Expert模式下编写,则应写成: 
 fscommand ("exec", "command.com" add chr(9) add "/c" add chr(9) add "echo" add chr(9) add "var=" 

 add textbox add ">textfile.txt"); 

 说明:一个chr(9) 表示一个空格;/c为command.com的参数,加上这个参数其后的命令才能被执行;>是重定向

 符,我们正是靠它将变量值写入textfile.txt中。另外,还可指定文件存放目录,如要在用户桌面上建立

 textfile.txt文件,那么将">textfile.txt"改为">c:\\windows\\desktop\\textfile.txt" 
 【注】:\\ 是转意字符。在Flash中,“ \ ”被当成保留关键字,已失去了本来的意义,所以要想显示斜杠 \ 

 ,必须加前缀转意符 \ ,使之是还原本来的意义,连在一起写就成了两个斜杠的形式。又比如,要想表示单引

 号,须写成 \’ 这样的形式;实现回车的效果,须用转意符号 \r 。 

 2、删除硬盘上的文件 

 通过FSCommand->exec命令还可以删除硬盘上的文件,下面的语法只适用于Windows 9X系统。 

 举例:将前面创建的textfile.txt删除 

 打开Action面板选择Normal模式,在语句列表中选取FSCommand语句,转到面板下部: 
 在Command框中填写:exec (不要复选其后的Expression复选框) 
 在Arguments框中填写:"command.com" add chr(9) add "/c" add chr(9) add "del" add chr(9) add 

 "textfile.txt" (一定要将Expression复选框打上钩!) 
 若在Expert模式下编写,则应写成: 
 fscommand ("exec", "command.com" add chr(9) add "/c" add chr(9) add "del" add chr(9) add 

 "textfile.txt"); 

 警告:使用这个命令要慎重,因为是采用DOS命令删除文件,在回收站里是看不到的被删文件的。还有,万勿用

 来做坏事。 

 3、在硬盘上新建目录 

 通过执行FSCommand->exec生成的cookie若置于和所属swf文件位于同一目录下,容易被识别,用户在清理系统

 垃圾时极有可能将其清除,那样的话就失去意义了,考虑到用户一般不会轻易删除文件夹,我们专门新建一个

 目录存放cookie不失为一个好计。 

 举例:在swf文件所在目录下新建一个名为textfile的子目录 

 打开Action面板选择Normal模式,在语句列表中选取FSCommand语句,转到面板下部: 
 在Command框中填写:exec (不要复选其后的Expression复选框) 
 在Arguments框中填写:"command.com" add chr(9) add "/c" add chr(9) add "md" add chr(9) add 

 "textfile" (一定要将Expression复选框打上钩!) 

 若在Expert模式下编写,则应写成: 
 fscommand("exec","command.com" add chr(9) add "/c" add chr(9) add "md" add chr(9) add "textfile" 

 说明:md是DOS命令集中用来建立目录的专用命令;如果换成rd则可以删除硬盘上已存在的目录,提醒诸位三思

 而后行。 

  
 ■□ 用FSCommand调用EXE可执行程序

 我们都知道,调用一个可执行程序(扩展名为.exe或.bat或.com) 和打开一个一般文件是不同的,前者可自动运

 行,而后者需要相应的可执行程序支持打开,像扩展名为doc和pdf的文件必须由相应的可执行程序才能打开阅

 读。分三种情况考虑: 
 ● 开启一个外部可执行程序:扩展名.exe可以省略。具体来说,若一个exe文件(假设为another.exe)和该

 swf文件本身在同一个目录下,则直接键入程序文件名即可。如: 
 fscommand("exec","another") 
 否则,应写明路径。如打开IE浏览器窗口: 
 fscommand("exec","c:\\progra~1\\intern~1\\iexplore") 
 //注意DOS下对长文件(夹)名的处理形式。 
 下面两种情况也可以不写路径—— 
 (1)当可执行程序是在c:\windows目录下时,可以不写路径。如调用windows的计算器,下面三种写法均可: 
 fscommand("exec","c:\\windows\\calc.exe") 
 fscommand("exec","c:\\windows\\calc") 
 fscommand("exec","calc") 
 (2)调用DOS命令也可省略路径。如下例打开MS-DOS下的Edit编辑器: 
 fscommand("exec","edit.com") 
 如果熟悉批处理文件写法,通过FSCommand->exec命令执行批处理文件可以一举多得。 

 ● 调用默认程序打开一般文件:这种情况不能省略扩展名,同样要注意文件路径。比如我们要打开和该swf文

 件本身在同一个目录下的名为fs.htm的文件,则命令写作: 
 fscommand("exec","start" add chr(9) add "fs.htm") 
 执行后,如果用户机子默认的浏览器是IE,则自动调用IE打开这个网页文件。 

 ● 指定程序打开一个一般文件:Windows并未规定一种类型的文件只能由一种程序打开(比如.txt文件既可以

 用记事本打开,也可以用写字板阅读),这就使我们可以任意选择可用于打开一般文件的可执行程序。当然前

 提是在大多数用户机子上都能够找到我们所指派的可执行程序,因此实际上能选取的是那些常用的、随windows 

 9X预装的程序,像记事本(notepad)、写字板(write)、IE浏览器(iexplorer)、command命令等等。如我们希望

 调用客户机上的“写字板”程序,打开一个和该swf文件本身在同一个目录下的名为fs.txt的文本文件,可以这

 么写命令: 
 fscommand("exec","c:\\windows\\write.exe" add chr(9) add "fs.txt") 

 前已述及,凡是在c:\windows目录下的可执行程序,在书写FSCommand->exec命令时都可以省略路径,简写成:

 fscommand("exec","write" add chr(9) add "fs.txt") 也是正确的。

 以上只对FlashMX以下版本才有效
 ----------------------------------------------

 
 Flash MX中增强了安全性,它虽然也可以调用exe文件,但它是有条件的。 

 1.你的flash文件不能是swf,而应该是exe文件,比如jimsons.exe; 
 2.要在jimsons.exe同一目录中新建一命名fscommand目录,你要调用的外部可执行文件要在fscommand目录下,

 且不能在子目录下,比如是notepad.exe,请copy notepad.exe到fscommand目录下; 
 3.action的写法为: 
 on (release) { 
 fscommand("exec", "notepad.exe"); 
 } 
 4.导出exe格式 
   发布方法如下:
      选中 File -> Publish Settings 或按ctrl+shift+F12
      它默认的发布类型为HTML(.html)与Flash(.swf),
      你将这两项取消,选中Windows Projectors(.exe)
      即可将你的Flash文件直接发布为exe可执行文件
      按ctrl+F12即可发布
      若你的文件尚未保存则它会发布在你flash的安装目录中
      若你的文件已保存则会发布在你的文件同一目录下
   还有一种比较简便的方法是:
     先用 File -> Export Movie...或按Ctrl+Alt+Shift+S 导出swf文件
     再打开这个文件,通过 文件 -> 创建播放器 即可产生EXE可执行文件

 下面有个例子
 
点击浏览该文件

 ===================================================================

 □■ 关于 Fscommand 和 javascript 的配合 

 在网页里面,flash播放器是可以和浏览器通讯的。你可以在flash 里面用 Fscommand() 发送参数给浏览器,

 然后在浏览器里面用 Movie1_DoFscommand() 获得参数。movie1是你在html里面给这个swf文件的ID名。

 ·新建一个flash,插入一个按钮
   在按钮上添加AS
  

 on (release) {
  fscommand("press");
 }
  



 · 作用为当鼠标按下这个按钮时,发出一个名字叫"press"的FS Command

 · 然后把它插进网页中,给它起一个ID的名字,如"jimsons";

 · 然后在<head></head>中加进如下的代码:

 <SCRIPT LANGUAGE="javascript"> 
 function jimsons_DOFSCommand(command,args) 
 //上面的一般是调用FS Command所需要的格式,其中"jimsons"就是给插入网页中的FLASH动画的ID名字 
 { 
 if (command=="press") 
 //当fs command="press"时(按钮被按下时发出这个FS Command) 
 alert("呵呵,不要碰我啦!"); 
 //弹出警告菜单,这是属于javascript里的语句 
 } 
 </SCRIPT>
 <SCRIPT LANGUAGE="VBScript"> 
 Sub jimsons_FSCommand(ByVal command, ByVal args) 
 call jimsons_DoFSCommand(command, args) 
 end sub 
 </SCRIPT>
 //运用VBScript,当FLASH发出FS Command时,执行flash1_DoFSCommand(command, args);
 //flash1为FLASH动画的id ,这也是运用FS Command时一般所需要的格式

 · 将flash插入到网页中,将其ID号命名为jimsons如下
 

  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 

 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" 

 name="jimsons" width="300" height="300" id="jimsons">
     <param name="movie" value="jimsons.swf">
     <param name="quality" value="high">
     <embed src="jimsons.swf" width="300" height="300" quality="high" 

 pluginspage="http://www.macromedia.com/go/getflashplayer";; type="application/x-shockwave-flash" 

 name="jimsons"></embed></object>
 



 □■ Flash Methods函数集 

    看了上面的例子,你一定对Flash Methods有所了解了吧!下面我来介绍一下Flash Methods的全部函数: 

 Flash Method函数 函数解释 

 Play()  使已停止了的FLASH动画在停止处开始播放 

 格式:YourMovieName.Play() 

 StopPlay()  停止正在播放的FLASH文件
  
 格式:YourMovieName.StopPlay() 

 IsPlay()  如果FLASH文件正在播放中,此函数值为true
  
 例如:if (YourMovieName.IsPlaying)
     alert("Playing")
 如当动画正在播放,就会弹出一个警告条。 
  
 GotoFrame(int frameNum)  控制FLASH跳到指定的frame 

 格式:YourMovieName.GotoFrame(10) 
 TotalFrames()  传回FLASH动画的总帧数
   
 格式:YourMovieName.TotalFrames() 
 CurrentFrame()  传回FLASH动画目前所在的帧数减一
 FS Command控制的帧都是由0开始的 

 格式:YourMovieName.CurrentFrame()+1 
 Rewind()  控制FLASH动画条会第一帧并停止 

 格式:YourMovieName.Rewind() 
 SetZoomRect(int left,
 int top,int right,int bottom)  放大指定的坐标区域(int left=左坐标的整数;int right为右坐标的整数

 ;int top和int bottom分别表示上坐标和下坐标的整数) 
  
 Zoom(int percent)  改变FLASH动画的大小。这函数只允许你将放大后的 图片缩小到原图片的大小  

 YourMovieName.Zoom(50)放大一倍
 YourMovieName.Zoom(200)缩小一倍
 YourMovieName.Zoom(0)恢复原始尺寸 

 Pan(int x,int y,int mode)  平移放大后的FLASH动画。x,y表示移动目的地的x轴和y轴的坐标;int mode表示

 表示坐标的单位,但其值为"0"时,以象数为单位,为"1"时,以百分比为单位。 
  
 PercentLoaded() 回传0~100的值,此值为浏览器载入FLASH的百分比程度。可用此功能制作loading画面 

 如:if (YourMovieName.PercentLoaded()<100)
  YourMovieName.GotoFrame(YourMovieName.PercentLoaded()) 

 LoadMovie(int layer,String url) 载入其他的FLASH动画,"int layer"为level的值,数值越大,动画就放得

 越上;"string url"为要栽入的动画的路径和名称 
 如:LoadMovie(1, "yourmovie.swf")表示把yourmovie.swf的动画加载到原来的动画上,level为1
 LoadMovie("", "yourmovie.swf")表示卸载yourmovie.swf动画
  
 TGotoFrame(String target,int frameNum)  控制动画跳到指定的movie clip的第几帧  
 TGotoFrame("_flash0/mm",10)表示跳到instance name为mm的movie clip的第十帧 

 TGotoLabel(String target,String label)  控制动画跳到指定的movie clip的指定的label  
 TGotoFrame("_flash0/mm","ten") 

 TCurrentFrame(String target) 传回指定的movie clip的当前所在帧减一  
 fras=YourMovieName.TCurrentFrame("_flash0/mm")+1 

 TCurrentLabel(String target) 传回指定的movie clip当前所在的label  
 label=play_movie.TCurrentLabel("_flash0/mm") 

 TPlay(String target)  控制指定的movie clip从停止出开始播放 
 YourMovieName.Play("_flash0/mm") 

 TStopPlay(String target)  控制指定的movie clip停止播放  
 YourMovieName.Play("_flash0/mm") 
 GetVariable(variable_name) 获取变量 
 SetVariable(variable_name,value) 变量赋值 
 TCallFrame(movie_clip,frame_number) call指定帧上的action 
 TCallLabel(movie_clip,label) call指定标签上的action 
 TGetProperty(movie_clip,property) 获取movie_clip的指定属性 
 TSetProperty(movie_clip,property,number) 设置movie_clip的指定属性 

   需要说明的是:最后两个函数在获取movie_clip的属性时,是以0到18的数字来表示的。下面列出它们分别

 代表的意思: 

 属性 作用 数字 使用方式 
 X Position X坐标 0 Get,Set 
 Y Position Y坐标 1 Get,Set 
 X Scale X方向缩放比率 2 Get,Set 
 Y Scale Y方向缩放比率 3 Get,Set 
 CurrentFrame movie_clip当前所在帧数 4 Get 
 TotalFrames movie_clip总帧数 5 Get 
 Alpha movie_clip的透明度 6 Get,Set 
 Visibility movie_clip是否可见 7 Get,Set 
 Width movie_clip的宽度 8 Get 
 Height movie_clip的高度 9 Get 
 Rotation movie_clip的旋转度 10 Get,Set 
 Target movie_clip的路径 11 Get 
 Framesloaded movie_clip已载入的帧数 12 Get 
 Name movie_clip的实体名字 13 Get,Set 
 DropTarget movie_clip的拖拽 14 Get 
 Url 包含movie_clip的动画的url 15 Get 
 HighQuality 设置画面质量为高质量 16 Get,Set 
 FocusRect 显示按钮边框 17 Get,Set 
 SoundBufTime 预设声音缓冲时间 18 Get,Set 

   我们可以看到,FS Command为Flash打开了一个使用脚本语言的接口,这可以弥补Flash在函数上的不足。 

 所以,利用好这个方法,将使我们在制作Flash动画时如虎添翼!

 
 □■ 最后,我想说说在FLASH中如果想调用javascript(或VBscript)的另外一种方法,不需要用FS Command,

 只需要运用getURL. 

 · 这做法为先在<head>与</head>之间写如下javascript代码:

 <script language="javascript"> 
 function jimsons(theURL,winName,features) { 
   window.open(theURL,winName,features);
 }
 </script>

 · 意思是定义一个jimsons()的函数,若被调用时,就打开一个新的窗口。
 函数里面有三个参数theURL是网址,winName是网页的标题,features是用来设置一些窗口特性如是否显示状态

 栏,滚动条等

 · 然后就用FLASH做一个按钮,把它拖到场景后,在按钮上写入AS

 

 on (release) {
     getURL("javascript:jimsons(http://bbs.flash8.net&#39;,Jimsons制作

 ,scrollbars=no,width=550,height=400)");
 }

 



 · 作用是,当按下按钮时,就从本网页中的javascript获取jimsons()这个函数。

 下面压缩包中有两个例子分别FScommand与javascript的结合
 与getURL与javascript的结合
 
点击浏览该文件

 将页面设为首页和加入收藏夹
 将页面设为首页和加入收藏夹
 【 用getURL的方法 】

 设为首页: 
 on (release) { 
 getURL("javascript:void(document.links.style.behavior=url(#default#homepage));void document.links.setHomePage(http://www.flash8.net/&#39;)", "_self", "POST"); 
 } 

 注意要将网页中的flash的ID号命名为"links"

 加入收藏夹: 
 on (release) { 
 getURL("javascript:void window.external.AddFavorite(http://www.flash8.net&#39;,闪吧);", "_self", "POST"); 
 } 

 下面有个例子

 
  点击浏览该文件

 【用fscommand的方法】

 1,先在flash的按钮上添加代码: 

 首页: 
 on (release) { 
 fscommand("setHomePage", "http://www.flash8.net";;;;); 
 } 

 收藏夹: 
 on (release) { 
 fscommand("addFavorite", "http://www.flash8.net|闪吧"); 
 } 

 然后在发布设置中选择flash with fscommand,发布成html 

 2,修改html: 

 找到 
 // Handle all the the FSCommand messages in a Flash movie 
 function sethomepage_DoFSCommand(command, args) { 
 } 
 这一段,修改成: 
 // Handle all the the FSCommand messages in a Flash movie 
 function sethomepage_DoFSCommand(command, args) { 
 var sethomepageObj = InternetExplorer ? sethomepage : document.sethomepage; 
 if (command == "setHomePage") { 
 document.links[0].style.behavior = "url(#default#homepage)"; 
 document.links[0].setHomePage(args); 
 } else if (command == "addFavorite") { 
 args = args.split("|"); 
 window.external.AddFavorite(args[0], args[1]); 
 } 
 } 

 最后,如果html里一个链接都没有,还需在<SCRIPT LANGUAGE=javascript>这句的前面添加一句<a href="javascript:"></a>
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。