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
。