LocalConnection 介绍

52 篇文章 0 订阅
50 篇文章 0 订阅

       在flash平台中,swf之间的通信一般采用LocalConnection。例如,Alcon日志工具就是一个典型的例子。

 

       通信可以通过以下方式进行: 
         1 在一个 SWF 文件内
         2 在多个 SWF 文件之间
         3 在 AIR 应用程序的内容(基于 SWF 或基于 HTML)之间
         4 在 AIR 应用程序的内容(基于 SWF 或基于 HTML)和运行于浏览器中的 SWF 内容之间


         LocalConnection 对象只能在运行于同一台客户端计算机上的文件之间进行通信,但这些文件可以在不同的应用程序中运行。例如,浏览器中运行的文件和 Adobe AIR 中运行的 SWF 文件。

 

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

 

        一个文件被称为发送方 文件,此文件包含要调用的方法。发送方文件必须包含一个 LocalConnection 对象和对 send() 方法的调用。另一个文件被称为接收方文件;此文件为调用方法的文件。接收方文件必须包含另一个 LocalConnection 对象和对 connect() 方法的调用。

send()connect() 的使用将有所不同,这取决于 文件是在同一个域中、在具有可预知域名的不同域中还是在具有不可预知域名(即动态域名)的不同域中。本文主要说明下不可预知不同域使用注意点,其他可以参考AS3参考文档。

 

      LocalConnection通过allowDomain(*)允许从所有域的调用,也可以通过调用多次allowDomain()方法来添加允许的域.在不可以预知的不同域中,需要在connectName的名称之前添加下划线(“_”)。

 

     使用LocalConnection需要注意下面几点:

     1 同一个域中使用LocalConection通信不要使用“_”开头来作为connectName,否则会是程序变慢。

     2 send数据内容限制为 40 千字节。

     3 LocalConnection是一个比较占内存的对象。

 

    下面是Alcon的代码,大于40K它是用ShareObject处理的。

 

    

                                                               /* If the data size exceeds 39Kb, use a LSO instead */
				if (s > 39000)
				{
					storeDataLSO(m, d);
					m = "onLargeData";
					d = null;
				}
				
				_connection.send("_alcon_lc", m, d, l, r, "");

 
      

/**
		 * Stores data larger than 40Kb to a Local Shared Object.
		 * 
		 * @private
		 */
		private static function storeDataLSO(m:String, d:*):void
		{
			var sharedObject:SharedObject = SharedObject.getLocal("alcon", "/");
			sharedObject.data["alconMethod"] = m;
			sharedObject.data["alconData"] = d;
			try
			{
				var flushResult:String = sharedObject.flush();
				if (flushResult == SharedObjectFlushStatus.FLUSHED)
				{
					return;
				}
			}
			catch (e:Error)
			{
				Security.showSettings(SecurityPanel.LOCAL_STORAGE);
			}
		}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值