swf文件通信

来源:互联网 发布:淘宝kappa官方旗舰店 编辑:程序博客网 时间:2024/06/05 16:47

使用 LocalConnection 类可以创建调用另一个 LocalConnection 对象中的方法的 LocalConnection 对象。通信可以通过以下方式进行:

  • 在一个 SWF 文件内
  • 在多个 SWF 文件之间
  • 在 AIR 应用程序的内容(基于 SWF 或基于 HTML)之间
  • 在 AIR 应用程序的内容(基于 SWF 或基于 HTML)和运行于浏览器中的 SWF 内容之间

    通过本地连接,可以在 SWF 文件之间进行这种通信,而不用使用 fscommand()  或 JavaScript。LocalConnection 对象只能在运行于同一台客户端计算机上的文件之间进行通信,但这些文件可以在不同的应用程序中运行。例如,浏览器中运行的文件和 Adobe AIR 中运行的 SWF 文件。

 

    ActionScript 3.0 中创建的 LocalConnection 对象可以与 ActionScript 1.0 或 2.0 中创建的 LocalConnection 对象通信。反之亦然:ActionScript 1.0 或 2.0 中创建的 LocalConnection 对象可以与 ActionScript 3.0 中创建的 LocalConnection 对象通信。Flash Player 可自动处理不同版本 LocalConnection 对象间的通信。

 

    若要了解如何使用 LocalConnection 对象在两个 文件之间进行通信,了解每个文件中使用的命令非常有用。一个 文件被称为发送方  文件;此文件包含要调用的方法。发送方 文件必须包含一个 LocalConnection 对象和对 send()  方法的调用。另一个 文件被称为接收方  文件;此文件为调用方法的文件。接收方 文件必须包含另一个 LocalConnection 对象和对 connect()  方法的调用。

send()  和 connect()  的使用将有所不同,这取决于 文件是在同一个域中、在具有可预知域名的不同域中还是在具有不可预知域名(即动态域名)的不同域中。下文将说明这三种不同的情况,并针对每种情况分别提供代码示例。

同一个域 。 这是使用 LocalConnection 对象最简单的情况,它只允许在位于同一个域中的 LocalConnection 对象间通信,这是因为默认情况下,应用程序允许同域通信。当同一个域中的两个 文件通信时,无需实施任何特殊的安全措施,而只需将 connectionName  参数的同一个值传递给 connect()  和 send()  方法。

从相同的域中加载

// receivingLC is in http://www.domain.com/receiving.swfreceivingLC.connect('myConnection');// sendingLC is in http://www.domain.com/sending.swf// myMethod() is defined in sending.swfsendingLC.send('myConnection', 'myMethod');

具有可预知域名的不同域 。 当不同域中的两个 SWF 文件通信时,需要通过调用 allowDomain()  方法来允许在这两个不同域之间进行通信。 还需要在 send()  方法中使用接收方 LocalConnection 对象的域名限定连接名:

从不同的域中加载

// receivingLC is in http://www.domain.com/receiving.swfreceivingLC.allowDomain('www.anotherdomain.com');receivingLC.connect('myConnection');// sendingLC is in http://www.anotherdomain.com/sending.swfsendingLC.send('www.domain.com:myConnection', 'myMethod');

具有不可预知域名的不同域 。 有时候,可能希望具有接收方 LocalConnection 对象的 文件在域之间具有更好的可移植性。若要避免在 send()  方法中指定域名,但要指出接收方和发送方 LocalConnection 对象不在同一个域中,可在connect()  和 send()  调用中的连接名称之前加一个下划线 (_)。若要允许在这两个不同域之间通信,请调用 allowDomain()  方法并传递您希望允许 LocalConnection 调用的域。或者,也可以传递通配符 (*) 参数来允许从所有域调用:

从未知域名中加载

// receivingLC is in http://www.domain.com/receiving.swfreceivingLC.allowDomain('*');receivingLC.connect('_myConnection');// sendingLC is in http://www.anotherdomain.com/sending.swfsendingLC.send('_myConnection', 'myMethod');

可以使用 LocalConnection 对象发送和接收单个 文件中的数据,但这不是通常的用法。

有关 send()  和 connect()  方法的详细信息,请参阅 LocalConnection.send()  和 LocalConnection.connect()  条目中对 connectionName  参数的讨论。 此外,请参阅 allowDomain()  和 domain  条目。

原创粉丝点击