在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);
}
}
分享到:
相关推荐
flash localconnection问题源文件
LocalConnection的问题
一个关于flex 中flash文件通信的说明。actionscript3.0
NULL 博文链接:https://globle.iteye.com/blog/748144
一个localConnection的例子
as3 加载 as2的通讯,flex调用 as2的
##使用说明###简介通过flash进行同一浏览器跨页面,跨内核的通讯。###外链形式[removed][removed][removed] localConnect.init();[removed]###模块加载形式[removed] require(['/module/localConnect/1.0.0/...
Flex中SWF和其他SWF文件之间的通信原理。该案例中TestLocalConnection为主SWF文件加载了TestLocalConnectionReceiver.SWF,两者之间是在同一个域下的...其他技术细节参见Flex_API中的LocalConnection章节。本机测试通过
多个swf的通讯,使用 LocalConnection 类可以创建一个 LocalConnection 对象,该对象可在一个 SWF 文件中或多个 SWF 文件间,调用另一个 LocalConnection 对象中的方法。
LocalConnection and DataProvider 使用方法範例
在之前一篇文章里尝试了跨浏览器的数据共享,最后提到使用LocalConnection还可以实现跨浏览器消息交互的可行性。 花了两个晚上简略的研究了下,LocalConnection的单向通信非常的简单,不过要实现多个终端交互,...
构造函数 Array 类、Boolean 类、Camera 类、Color 类、ContextMenu 类、ContextMenuItem 类、Date 类、Error 类、LoadVars 类、LocalConnection 类、Microphone 类、NetConnection 类、NetStream 类、Number 类、...
Chapter 4 - Using External API and LocalConnection Chapter 5 - Working with XML Chapter 6 - Overview of LiveCycle Data Services and BlazeDS Chapter 7 - Flex Data Access Methods Chapter 8 - ...
2)本插件是基于同一台电脑上的FLASH之间能进行LocalConnection以及FLASH与JS能相互调用的原理而设计,将客户端不同域页面间Javascript相互调用转化为了FLASH之间的"本地命令发送". 3)本插件在不同域页面间Javascript...
利用iframe和location.hash,数据直接暴露在了url中,数据容量和类型都有限 3.Flash LocalConnection, 对象可在一个 SWF 文件中或多个 SWF 文件间进行通信, 只要 在同一客户端就行,跨应用程序, 可以跨域。...
设置LocalConnection权限 控制外出URL访问 共享对象 摄像头、麦克风、剪贴板、鼠标和键盘访问 AIR安全性 第章:如何使用ActionScript示例 示例类型 在FlashProfessional中运行ActionScript示例 在FlashBuilder中运行...
(或SyncConnection / LocalConnection ) 使用Message发送和接收消息。 获取和附加所有类型的,有关详细信息,请参见。 使用dbus-crossroads或dbus-tree板条箱的构建方法调度服务器。 支持标准D-Bus接口(自检,...
asLocalConnect是在ActionScript 2 / ActionScript 3中进行LocalConnection的更好方法。功能:心跳,同步,onLoad / onUnload事件处理程序,广播,LocalConenct通道和其他不错的功能。
ThinFlashDebug(TFD)是一种简单而轻巧的调试工具。 它使用LocalConnection将消息从Flash应用程序记录到独立的调试窗口。 它仅使用静态函数,不需要包含任何内容。