fscommand 函數
fscommand(command:String, parameters:String) : Void
使 SWF 文件與 Flash Player 或承載 Flash Player 的程序(如 Web 瀏覽器)進行通訊。還可以使用 fscommand()
函數將消息傳遞給 Macromedia Director,或者傳遞給 Visual Basic (VB)、Visual C++ 和其它可承載 ActiveX 控件的程序。
fscommand()
函數使 SWF 文件與 Web 頁中的腳本能進行通訊。不過,腳本訪問是由 Web 頁的 allowScriptAccess
設置控制的。(您可以在嵌入 SWF 文件的 HTML 代碼中設置此屬性 - 例如,在 Internet Explorer 的
PARAM
標籤或 Netscape 的 EMBED
標籤中。)當 allowScriptAccess
設置爲
"never"
時,SWF 文件無法訪問 Web 頁腳本。對於 Flash Player 7 及更高版本,當 allowScriptAccess
設置爲
"always"
時,SWF 文件始終可以訪問 Web 頁腳本。當 allowScriptAccess
設置爲
"sameDomain"
時,只允許從與該 Web 頁位於同一域中的 SWF 文件進行腳本訪問;對於以前版本的 Flash Player,始終允許腳本訪問。如果在 HTML 頁中未指定
allowScriptAccess
,則默認情況下,對於第 8 版及更高版本的 SWF 文件,該屬性設置爲 "sameDomain"
;對於第 7 版及更低版本的 SWF 文件,設置爲
"always"
。
用法 1:若要使用 fscommand()
將消息發送給 Flash Player,必須使用預定義的命令和參數。下表列出了可以爲
fscommand()
函數的 command
參數和 parameters
參數指定的值。這些值控制在 Flash Player 中播放的 SWF 文件,包括放映文件。(放映文件 是以可作爲獨立應用程序運行(也就是說,不需要使用 Flash Player 即可運行)的格式保存的 SWF 文件。)
命令 |
參數 |
目的 |
---|---|---|
|
無 |
關閉放映文件。 |
|
|
指定 |
|
|
指定 |
|
|
指定 |
|
應用程序的路徑 |
在放映文件內執行應用程序。 |
|
|
指定 |
可用性:
- 表中描述的命令在 Web 播放器中都不可用。
- 所有這些命令在獨立的應用程序(例如,放映文件)中都可用。
- 只有
allowscale
和exec
在測試影片播放器中可用。
exec
命令只能包含字符 A-Z、a-z、0-9、句號 (.) 和下劃線 (_)。exec
命令僅在 fscommand 子目錄中運行。也就是說,如果您使用
exec
命令調用應用程序,該應用程序必須位於名爲 fscommand 的子目錄中。exec
命令只在 Flash 放映文件內起作用。
用法 2:若要使用 fscommand()
向 Web 瀏覽器中的腳本語言(例如 JavaScript)發送消息,您可以在
command
和 parameters
參數中傳遞任意兩個參數。這些參數可以是字符串或表達式,並在處理或捕獲
fscommand()
函數的 JavaScript 函數中使用。
在 Web 瀏覽器中,fscommand()
調用 JavaScript 函數 moviename_DoFScommand
,該函數位於包含 SWF 文件的 Web 頁中。對於
moviename
,提供您用於 EMBED
標籤的 NAME
屬性或 OBJECT
標籤的 ID 屬性的 Flash 對象的名稱。如果對 SWF 文件分配名稱
myMovie
,則調用 JavaScript 函數 myMovie_DoFScommand
。
在包含 SWF 文件的 Web 頁中,設置 allowScriptAccess
屬性以允許或拒絕 SWF 文件訪問 Web 頁的能力。(您可以在嵌入 SWF 文件的 HTML 代碼中設置此屬性,例如,在 Internet Explorer 的
PARAM
標籤或 Netscape 的 EMBED
標籤中。)當 allowScriptAccess
設置爲
"never"
時,外出腳本處理始終失敗。當 allowScriptAccess
設置爲 "always"
時,外出腳本處理始終成功。當它設置爲
"sameDomain"
時,只允許從與該 Web 頁位於同一域中的 SWF 文件進行腳本訪問。如果未在 Web 頁中指定
allowScriptAccess
,則對於 Flash Player 8,它默認爲 "sameDomain"
;對於以前的 Flash Player 版本,它默認爲
"always"
。
使用此函數時,請考慮 Flash Player 安全模型。對於 Flash Player 8,如果執行調用的 SWF 文件在只能與本地文件系統內容交互的沙箱或只能與遠程內容交互的沙箱中,並且所包含的 HTML 頁在不受信任的沙箱中,則不允許使用
fscommand()
函數。有關更多信息,請參見以下部分:
- "學習 Flash 中的 ActionScript 2.0"的第 17 章,"瞭解安全性"
- Flash Player 8 安全性白皮書
- Flash Player 8 與安全相關的 API 白皮書
用法 3:fscommand()
函數可以將消息發送給 Macromedia Director。這些消息由 Lingo(Director 腳本語言)解釋爲字符串、事件或可執行 Lingo 代碼。如果消息爲字符串或事件,則必須編寫 Lingo 代碼才能從
fscommand()
函數接收該消息並在 Director 中執行動作。有關更多信息,請訪問 Director 支持中心,網址爲 www.macromedia.com/support/director。
用法 4:在 VisualBasic、Visual C++ 和可承載 ActiveX 控件的其它程序中,fscommand()
利用可使用環境的編程語言處理的兩個字符串發送 VB 事件。有關更多信息,請使用關鍵字"Flash 方法"搜索 Flash 支持中心,網址爲 www.macromedia.com/go/flash_support_cn。
注意:如果要爲 Flash Player 8 或更高版本發佈,則 ExternalInterface 類可爲以下通訊提供更好的性能:JavaScript 與 ActionScript 之間的通訊(用法 2);ActionScript 與 VisualBasic、Visual C++ 或可承載 ActiveX 控件的其它程序之間的通訊(用法 4)。您應該繼續使用
fscommand()
將消息發送到 Flash Player(用法 1)和 Macromedia Director(用法 3)。
可用性:Flash Player 3;ActionScript 1.0
參數
command:String
- 傳遞給主機應用程序用於任何用途的一個字符串,或傳遞給 Flash Player 的一個命令。
parameters:String
- 傳遞給主機應用程序用於任何用途的一個字符串,或傳遞給 Flash Player 的一個值。
示例
在下面的示例中,fscommand()
將 Flash Player 設置爲在鬆開 fullscreen_btn
或
unfullscreen_btn
按鈕時將 SWF 文件放大到整個顯示器屏幕大小。
this.fullscreen_btn.onRelease = function() { fscommand("fullscreen", true); }; this.unfullscreen_btn.onRelease = function() { fscommand("fullscreen", false); };
下面的示例將 fscommand()
應用於 Flash 中的某個按鈕,以用於在 HTML 頁中打開 JavaScript 消息框。消息本身作爲
fscommand
參數發送到 JavaScript。
您必須將一個函數添加到包含 SWF 文件的 Web 頁。該函數,即 myDocument
_DoFSCommand()
,等待一個
fscommand()
調用。在 Flash 中觸發 fscommand()
(例如,用戶單擊按鈕)時,command
和
parameter
字符串將傳遞給 myDocument
_DoFSCommand()
函數。可以在 JavaScript 或 VBScript 代碼中以任何需要的方式使用所傳遞的字符串。在此示例中,該函數包含一個條件
if
語句,該語句檢查命令字符串是否爲 "messagebox"
。如果是,則一個 JavaScript 警告框顯示
fscommand()
函數的 parameters
字符串的內容。
function myDocument_DoFSCommand(command, args) { if (command == "messagebox") { alert(args); } }
在 Flash 文檔中,將 fscommand()
添加到一個按鈕:
fscommand("messagebox", "This is a message box called from within Flash.")
也可以對 fscommand()
函數的參數使用表達式,如下面的示例所示:
fscommand("messagebox", "Hello, " + name + ", welcome to our website!")
要測試 SWF 文件,請選擇"文件">"發佈預覽">"HTML"。如果在 Flash 中使用 FSCommand 模板(在"發佈設置"對話框中,選擇 HTML 標籤)發佈 SWF 文件,Flash 會自動插入
myDocument_DoFSCommand()
函數。SWF 文件的 NAME
和 ID
屬性將爲文件名。例如,對於文件 myDocument.fla,這些屬性將設置爲
myDocument
。