基本介紹
常用指令,命令作用,存儲檔案到硬碟,刪除硬碟上的檔案,在硬碟上新建目錄,導出exe格式,全部函式,使用詳解,舉例說明,
常用指令
指令cmd_string指定所要執行的指令名,可為FlashPlayer的
指令或瀏覽器javascript函式。arg_string聲明該指令所用到的參數。
FlashPlayer的指令有(只能在獨立播放器時使用):
"fullscreen" 是否全螢幕播放,參數為true或false
"allowscale" 是否允許通過拉伸視窗縮放影片,參數為true或false
"showmenu" 是否在播放器顯示選單,參數為true或false
"trapallkeys" 是否禁止播放器的快捷鍵(如Esc表示停止播放並恢復
視窗顯示),參數為true或false。但Alt+F4系統快捷鍵(關閉視窗)依然可用。
"save" 隱藏屬性,作用是存變數到文本檔案.
"exec" 運行arg_string所指定的檔案。
■□ FSCommand語句中的exec命令可以使swf 檔案具有讀寫磁碟的功能
這部分內容說的是,FSCommand->exec命令與作業系統進行互動的用法,包括如何打開本地檔案,存儲檔案,建立目錄,打開瀏覽器視窗以及其它外部程式。針對MAC機和PC機使用不同的作業系統,FSCommand語句在實際寫法上不盡相同,本文以PC機為例進行說明。(MAC機中的情況不作翻譯)
命令作用
適用於Windows 9X的FSCommand->exec命令詳細說明:
(註:若要將以下命令句法移植到NT/2000/Me上,不能原封不動的照搬,需要略作改動,請自行實踐。)
存儲檔案到硬碟
有時我們想要在用戶的機子上留下cookie,或在用戶的硬碟上存儲一些其它類型的信息,唯一可行的方法就是藉助FSCommand,它通過調用用戶Windows系統的command.com命令打開MS-DOS視窗實現檔案的存儲。因為使用 DOS命令行的方式生成檔案,所以MS-DOS視窗是必然要出現的,但在高配置機子上,這個過程一閃而過,用戶不易察覺。使得該命令生效的前提是,含有這個FSCommand語句的swf檔案必須是在本機上運行,而不是通過網路來訪問。
舉例:將swf檔案中文本輸入框(變數名為:textbox)的內容存到一個新創建的和swf檔案位於相同目錄下的名為textfile.txt的檔案中,並作為值賦給新的變數var。如下書寫FSCommand 語句:
打開Action面板選擇Normal模式,在語句列表中選取FSCommand語句,轉到面板下部:
若在Expert模式下編寫,則應寫成:
fscommand ("exec", "command.com" add chr(9) add "/c" add chr(9) add "echo" add chr(9) add "var="
addtextboxadd ">textfile.txt");
說明:一個chr(9) 表示一個空格;/c為command.com的參數,加上這個參數其後的命令才能被執行;>是重定向符,我們正是靠它將變數值寫入textfile.txt中。另外,還可指定檔案存放目錄,如要在用戶桌面上建立 textfile.txt檔案,那么將">textfile.txt"改為">c:\\windows\\desktop\\textfile.txt"
【注】:\\ 是轉意字元。在Flash中,“ \ ”被當成保留關鍵字,已失去了本來的意義,所以要想顯示斜槓\ ,必須加前綴轉意符 \ ,使之是還原本來的意義,連在一起寫就成了兩個斜槓的形式。又比如,要想表示單引號,須寫成 \' 這樣的形式;實現回車的效果,須用轉意符號 \r 。
刪除硬碟上的檔案
通過FSCommand->exec命令還可以刪除硬碟上的檔案,下面的語法只適用於Windows 9X系統。
舉例:將前面創建的textfile.txt刪除
打開Action面板選擇Normal模式,在語句列表中選取FSCommand語句,轉到面板下部:
在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");
在硬碟上新建目錄
舉例:在swf檔案所在目錄下新建一個名為textfile的子目錄
打開Action面板選擇Normal模式,在語句列表中選取FSCommand語句,轉到面板下部:
在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");
}
導出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);
· 將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)
??
格式: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
□■ 最後,我想說說在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");
}
使用詳解
1.fscommand("fullscreen",arguments)
這裡的具體命令就是fullscreen,表示是否全螢幕,而參數arguments可以取兩個值:true(允許全螢幕)或者false(禁止全螢幕),系統默認值為false。
我們通常是在動畫的第一幀添加fscommand("fullscreen",true);實現全螢幕播放動畫。 ctrl+enter,看不到全螢幕,關閉當前的FLASH,打開剛才按ctrl+enter形成的swf檔案,雙擊打開,這回就是全螢幕了!
2.fscommand("allowscale",arguments)
這裡的具體命令就是allowscale,表示是否允許縮放。參數arguments依舊可以取兩個值:true(允許縮放)或者false(禁止縮放),系統默認值為true。
我們通常是在動畫的第一幀添加fscommand("allowscale",false);來實現對FLASH播放器中右鍵選單的控制。
依然是按ctrl+enter,關閉當前的FLASH,打開剛才按ctrl+enter形成的swf檔案,雙擊打開,你可以用滑鼠。
調整視窗的大小,會發現無論視窗多大多小,其中的物體的大小都不變。你可以打開另一個沒有加此命令的swf,再試一試,你就會發現區別!
3.fscommand(quit)
這個命令一般加在按鈕上,用於關閉當前的FLASH播放器;或者是播放到某幀退出,我們看到的一些光碟的片頭就是這樣做的。
用法很簡單,不多說,直接在按鈕上加:
on(release){
fscommand("quit");
}
或者在某幀直接加 fscommand("quit");代碼。
4.fscommand("showmenu",arguments)
這裡的具體命令就是showmenu,表示是否允許選單的顯示。參數arguments依舊可以取兩個值:true(允許顯示)或者false(禁止顯示),系統默認值為true。
在任意一個動畫的第一幀加fscommand("showmenu","false");
依然是按ctrl+enter,關閉當前的FLASH,打開剛才按ctrl+enter形成的swf檔案,雙擊打開,可以看見效果
5.fscommand("exec","applicationname")
其作用是運用FLSH調用外部的應用程式。調用EXE檔案最重要的一點,必須把你的SWF檔案先轉換成EXE,也就是FLASH的播放器。必須把你要調用的EXE檔案放在同一目錄的fscommand檔案下。
開啟一個外部可執行程式:擴展名.exe可以省略。具體來說,若一個exe檔案(假設為flash1.exe)和該swf檔案本身在同一個目錄下,則直接鍵入程式檔案名稱即可。如:
fscommand("exec","flash1")
否則,應寫明路徑。如打開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命令執行批處理檔案可以一舉多得。
舉例說明
下面有個例子
點擊瀏覽該檔案
【用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>