as2 AVM1对象和as3对象的通信

本文涉及的产品
.cn 域名,1个 12个月
简介:

注意本人遇到的 connection名称问题,因为实际上是域:名称,调用时有时会找不到,因此在connection名称前加_

更真实的原因是as1.0不支持connection,所以发布时一定要看清楚哈,用flash player6不一定是as2.0!

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

// receivingLC is in http://www.domain.com/receiving.swf
receivingLC.allowDomain('*');
receivingLC.connect('_myConnection');

// sendingLC is in http://www.anotherdomain.com/sending.swf
sendingLC.send('_myConnection', 'myMethod');

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

// receivingLC is in http://www.domain.com/receiving.swf
receivingLC.connect('myConnection');

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

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() 方法。

AS3的connect()方法已经没有返回值了,那么想在连接失败的时候尝试其它连接就只能通过捕获ArgumentError。

varconn:LocalConnection=newLocalConnection();
varid:int=1;
while(true){
try{
conn.connect(String(id));
break;
}catch(e:ArgumentError){
id ;
}
}
本文转自jiahuafu博客园博客,原文链接http://www.cnblogs.com/jiahuafu/archive/2009/10/30/1593006.html如需转载请自行联系原作者

jiahuafu

相关文章
|
5月前
|
缓存 小程序 数据库
小程序页面之间(传值)传递数据的方法
小程序页面之间(传值)传递数据的方法
205 63
|
缓存 JavaScript
计算属性和侦听属性有什么区别?怎样选择
计算属性和侦听属性有什么区别?怎样选择
63 0
|
8月前
|
算法 数据处理 C++
Franca IDL与CommonAPI C++ D-Bus实战教程:方法、信号和属性传递详解
Franca IDL与CommonAPI C++ D-Bus实战教程:方法、信号和属性传递详解
172 0
|
8月前
|
开发者 iOS开发
如何实现 UIViewController 之间的数据传递?
如何实现 UIViewController 之间的数据传递?
67 1
|
存储 移动开发 JavaScript
cookie,sessionStorage和localStorage的区别?精灵图是什么?原生对象、内置对象、宿主对象的联系和区别?
cookie:** 直译是"小饼干"的意思,在web中就是存在客户端的“一小块”数据。一个cookie大小不超过4kb,在设置的过期时间过期之后会消失,每次请求都会与服务器交互。
|
Android开发 C++
Android系统的Ashmem匿名共享内存子系统分析(3)- Ashmem子系统的 C/C++访问接口
Android系统的Ashmem匿名共享内存子系统分析(3)- Ashmem子系统的 C/C++访问接口
203 0
SwiftUI—如何使用@ObservedObject监听实例对象
SwiftUI—如何使用@ObservedObject监听实例对象
816 0
|
缓存 Java 数据库连接
hibernate5(8)操纵对象入门[3]操控对象封装方法
<div class="markdown_views"> <p>为什么要说是“封装方法”呢?因为它帮我们封装好了底层的增删改查操作,直接调用相应方法即可灵活地操作我们数据库数据。它们由Session接口提供,下面我们通过实例一一分析这些方法。</p> <h2 id="1save方法">1.save方法</h2> <p><font color="blue">Session
2040 0

热门文章

最新文章