c#与AS交互的方法--fscommand函数

 

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 文件。)

命令

参数

目的

quit

关闭放映文件。

fullscreen

true 或者 false

指定 true 可将 Flash Player 设置为全屏模式。指定 false 可将播放器返回到标准菜单视图。

allowscale

true 或者 false

指定 false 可设置播放器始终按 SWF 文件的原始大小绘制 SWF 文件,从不进行缩放。指定 true 会强制将 SWF 文件缩放到播放器的 100% 大小。

showmenu

true 或者 false

指定 true 可启用整个上下文菜单项集合。指定 false 将隐藏除"关于 Flash Player"和"设置"外的所有上下文菜单项。

exec

应用程序的路径

在放映文件内执行应用程序。

trapallkeys

true 或者 false

指定 true 可将所有按键事件(包括快捷键)发送到 Flash Player 中的 onClipEvent(keyDown/keyUp) 处理函数。

可用性:

  • 表中描述的命令在 Web 播放器中都不可用。
  • 所有这些命令在独立的应用程序(例如,放映文件)中都可用。
  • 只有 allowscaleexec 在测试影片播放器中可用。

exec 命令只能包含字符 A-Z、a-z、0-9、句号 (.) 和下划线 (_)。exec 命令仅在 fscommand 子目录中运行。也就是说,如果您使用 exec 命令调用应用程序,该应用程序必须位于名为 fscommand 的子目录中。exec 命令只在 Flash 放映文件内起作用。

用法 2:若要使用 fscommand() 向 Web 浏览器中的脚本语言(例如 JavaScript)发送消息,您可以在 commandparameters 参数中传递任意两个参数。这些参数可以是字符串或表达式,并在处理或捕获 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_btnunfullscreen_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()(例如,用户单击按钮)时,commandparameter 字符串将传递给 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 文件的 NAMEID 属性将为文件名。例如,对于文件 myDocument.fla,这些属性将设置为 myDocument

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值