`
GLOBLE
  • 浏览: 24551 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

使用LocalConnection进行swf之间的数据交互(附helloWorldDemo)

    博客分类:
  • FLEX
阅读更多
许多时候,我们需要在2个或多个swf文件之间进行数据交互,比如说坐标定位,数据通讯等.这里Adobe公司已经考虑到了这个问题了,他提供给我们localConnection这个类拱用户进行不同swf文件间的数据交互.
数据间的交互也包括多种情况
同一个域的情况下:
       这是使用 LocalConnection 对象最简单的情况,它只允许在位于同一个域中的 LocalConnection 对象间通信,这是因为默认情况下,应用程序允许同域通信。当同一个域中的两个 文件通信时,无需实施任何特殊的安全措施,而只需将 connectionName 参数的同一个值传递给 connect() 和 send() 方法。



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

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



这里因为只是为了快速上手,所以就简单介绍了在同一个域内2个不同swf文件之间的交互
首先就是划分2个交互文件谁为信息发送者,谁为信息接收者,这里我首先创建了一个接收方
接收方的名称为LocalConnectionReceiverExample:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="localConnectionReceiver()">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			
			 private var conn:LocalConnection;
			 
			 public function localConnectionReceiver():void     {
			 	
	            conn = new LocalConnection();
	            conn.client = this;
	            try {
	                conn.connect("myConnection");
	            } catch (error:ArgumentError) {
	                trace("Can't connect...the connection name is already being used by another SWF");
	            }
        	}
        	
        	public function lcHandler(msg:String):void {
            	getText.text = msg;
        	}
		]]>
	</mx:Script>
	<mx:Label x="52" y="237" text="接收到的数据:" fontSize="12"/>
	<mx:Text x="155" y="237" width="183" fontSize="12" id="getText"/>
		
</mx:Application>

只是一个文本框.
在接收者中,首先得 创建一个LocalConnection ,然后申明该文件为能够提供方法给外来swf进行调用
conn.client = this;

接着创建一个连接通道
conn.connect("myConnection");

以及提供一个给外来swf调用的方法
public function lcHandler(msg:String):void {
            	getText.text = msg;
        	}

这里接收方就创建完毕,然后是发送方
发送方的名称为LocalConnectionSenderExample:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="localConnectionSender()">
		<mx:Script>
			<![CDATA[
			private var conn:LocalConnection;
			
			public function localConnectionSender():void {
	            sendBtn.addEventListener(MouseEvent.CLICK, sendMessage);
	            conn = new LocalConnection();
	            conn.addEventListener(StatusEvent.STATUS, onStatus);
	        }
	        
	        private function sendMessage(event:MouseEvent):void {
	            conn.send("myConnection", "lcHandler", message.text);
	        }
	        
	        private function onStatus(event:StatusEvent):void {
	            switch (event.level) {
	                case "status":
	                    trace("LocalConnection.send() succeeded");
	                    break;
	                case "error":
	                    trace("LocalConnection.send() failed");
	                    break;
	            }
	        }
			]]>
		</mx:Script>
		<mx:Label x="52" y="237" text="接收到的数据:" fontSize="12"/>
		<mx:TextInput x="155" y="237" fontSize="12" id="message"/>
		<mx:Button x="346" y="237" label="发送" fontSize="12" id="sendBtn"/>
</mx:Application>

发送方结构也很简单,只是一个输入框和一个发送按钮,这里要做的就是把输入的内容,发送到接收方的swf文件中.
发送方同样需要创建一个LocalConnection对象
conn = new LocalConnection();
conn.addEventListener(StatusEvent.STATUS, onStatus);

这里做了一个连接到接收方的监听,以判定接收方的状态.
然后就是向接收方发送数据:
conn.send("myConnection", "lcHandler", message.text);

这里第一个参数就是接收方创建的接口通道,第二个参数就是接收方提供的调用方法,第三个参数就是传递的参数.(localconnection的send方法还有几个参数,具体参见api).

不过这种交互方式需要2个swf同时运行的情况下才能成功,所以还存在一个问题.


  • 大小: 28.3 KB
  • 大小: 24.6 KB
  • 大小: 30.7 KB
分享到:
评论
1 楼 Toro_鱼 2015-12-30  
flash里制作的程序包怎么实现局域网操控?
更细致一点来说,就是做完的程序包,操控界面和显示界面是在局域网中的两台电脑。操控界面按钮的点击结果在显示界面的电脑上做出反馈。比如:我在操控界面的电脑上点击影片播放,显示界面电脑屏幕就开始播放影片了。。。需要两个flash文件之间进行通信吧?具体怎么操作?麻烦大神了。

相关推荐

    Flex中SWF和SWF文件之间的通信案例

    Flex中SWF和其他SWF文件之间的通信原理。该案例中TestLocalConnection为主SWF文件加载了TestLocalConnectionReceiver.SWF,两者之间是在同一个域下的通信,工程代码编译路径需要下载者手动修改下。其他技术细节参见...

    localconnection

    flash localconnection问题源文件

    LocalConnection的问题

    LocalConnection的问题

    多个swf的通讯

    多个swf的通讯,使用 LocalConnection 类可以创建一个 LocalConnection 对象,该对象可在一个 SWF 文件中或多个 SWF 文件间,调用另一个 LocalConnection 对象中的方法。

    LocalConnection域访问详解

    一个关于flex 中flash文件通信的说明。actionscript3.0

    ActionScript开发人员指南中文版

    外部API示例:在ActionScript和Web浏览器中的JavaScript之间进行通信 第章:AIR中的XML签名验证 XML签名验证的基础知识 关于XML签名 实现IURIDereferencer接口 第章:客户端系统环境 客户端系统环境基础知识 使用...

    [原创]基于FLASH机制实现的不同域窗口相互调用js的插件-虫洞

    2)本插件是基于同一台电脑上的FLASH之间能进行LocalConnection以及FLASH与JS能相互调用的原理而设计,将客户端不同域页面间Javascript相互调用转化为了FLASH之间的"本地命令发送". 3)本插件在不同域页面间Javascript...

    As3.0 localConnectionDemo

    一个localConnection的例子

    flash LocalConnection

    as3 加载 as2的通讯,flex调用 as2的

    localConnection

    ##使用说明###简介通过flash进行同一浏览器跨页面,跨内核的通讯。###外链形式[removed][removed][removed] localConnect.init();[removed]###模块加载形式[removed] require(['/module/localConnect/1.0.0/...

    Web跨浏览器进程通信(Web跨域)

    在之前一篇文章里尝试了跨浏览器的数据共享,最后提到使用LocalConnection还可以实现跨浏览器消息交互的可行性。  花了两个晚上简略的研究了下,LocalConnection的单向通信非常的简单,不过要实现多个终端交互,...

    ActionScript开发技术大全

    8.2.3在FlexBuilder3中进行调试 155 8.3处理ActionScript3.0中的异常 160 8.3.1使用try…catch…finally语句 160 8.3.2throw语句主动抛出异常 162 8.3.3处理异常事件 163 8.4异常类型 163 8.4.1异常对象 164 8.4.2...

    JavaScript使用HTML5的window.postMessage实现跨域通信例子

    利用iframe和location.hash,数据直接暴露在了url中,数据容量和类型都有限 3.Flash LocalConnection, 对象可在一个 SWF 文件中或多个 SWF 文件间进行通信, 只要 在同一客户端就行,跨应用程序, 可以跨域。...

    LocalConnectionDataProviderSampes

    LocalConnection and DataProvider 使用方法範例

    ThinFlashDebug-开源

    ThinFlashDebug(TFD)是一种简单而轻巧的调试工具。 它使用LocalConnection将消息从Flash应用程序记录到独立的调试窗口。 它仅使用静态函数,不需要包含任何内容。

    dbus-rs:用于Rust语言的D总线绑定

    (或SyncConnection / LocalConnection ) 使用Message发送和接收消息。 获取和附加所有类型的,有关详细信息,请参见。 使用dbus-crossroads或dbus-tree板条箱的构建方法调度服务器。 支持标准D-Bus接口(自检,...

    flash action script 经典字典教程大全,学flash必备

    构造函数 Array 类、Boolean 类、Camera 类、Color 类、ContextMenu 类、ContextMenuItem 类、Date 类、Error 类、LoadVars 类、LocalConnection 类、Microphone 类、NetConnection 类、NetStream 类、Number 类、...

    PROGRAMMING ACTIONSCRIPT 3.0

    About this manual 13 ...Setting LocalConnection permissions.790 Controlling access to scripts in a host web page..790 Shared objects...792 Camera, microphone, clipboard, mouse, and keyboard access.794

Global site tag (gtag.js) - Google Analytics