`
GLOBLE
  • 浏览: 25035 次
  • 性别: 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文件之间进行通信吧?具体怎么操作?麻烦大神了。

相关推荐

    SWF之间通信、Flex与SWF之间通信

    ### SWF之间通信、Flex与SWF之间通信 在探讨SWF之间以及Flex与SWF之间的通信时,我们首先需要了解SWF文件的基本概念及其在Adobe Flash平台中的作用。SWF(Shockwave Flash)是一种被广泛应用于网页动画、游戏和其他...

    localconnection

    在IT行业中,`LocalConnection` 是 Adobe Flash 技术中...理解并掌握Flash LocalConnection的使用对于开发涉及多个Flash组件交互的应用至关重要。通过分析源文件,我们可以学习到如何有效利用这一技术来解决实际问题。

    LocalConnection域访问详解

    这个功能在Flex开发中特别有用,因为有时我们可能需要在不同的SWF文件之间交换数据或控制逻辑,尤其是在处理跨文件交互时。在本文中,我们将深入探讨LocalConnection的域访问规则以及如何在不同安全环境中正确使用它...

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

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

    flash swf之间传值

    在Flash开发中,SWF文件间的通信是一个常见的需求,特别是在构建多组件或模块化应用时。本篇文章将详细探讨如何在A.SWF加载B.SWF的过程中实现值的...在实际项目中,确保对数据进行适当的验证和清理,以防止恶意注入。

    LocalConnection的问题

    LocalConnection 是Adobe Flash Player中的一个关键特性,它允许在不同SWF文件或同一SWF文件内的不同帧之间创建通信通道,实现数据的实时传递。在处理动态内容、游戏或者需要不同部分之间通信的复杂应用程序时,...

    同机两个swf通讯

    本地连接是Flash Player提供的一种安全机制,允许运行在同一台计算机上的不同SWF文件之间进行低延迟、高效率的数据通信。它不依赖网络,而是通过操作系统来传递消息,因此非常适合于在同一台电脑上运行的多文件间...

    多个swf的通讯

    `LocalConnection`是实现多个SWF之间通讯的重要工具,尤其适用于不同版本ActionScript的交互。对于AS3,还有`ApplicationDomain`提供更直接的跨SWF访问能力。在实际应用中,应根据项目需求选择合适的通讯方式。

    As3.0 localConnectionDemo

    LocalConnection是Flash Player和Air平台提供的一种通信机制,允许同一用户的多个SWF文件之间进行安全的、异步的数据交换。这种通信方式在处理跨域安全限制时尤其有用,因为它是同源策略的一个例外。 首先,让我们...

    flex与flash的交互

    4. **数据共享**:在Flex和Flash之间共享数据是常见的需求,可以使用`LocalConnection`类创建本地连接对象,实现不同沙箱(即安全域)之间的数据传递。 5. **资源共享**:如果Flash内容需要访问Flex应用中的资源,...

    flash LocalConnection

    `LocalConnection`是Adobe Flash Player提供的一种功能,它允许在同一台计算机上运行的不同Flash应用程序(SWF文件)之间建立通信通道,实现数据交换。这个特性尤其在AS3与AS2的混合应用开发中显得尤为重要,因为AS3...

    在flash动画和自己的程序中传递消息进行交互的代码

    LocalConnection允许同一台计算机上的两个独立的SWF文件(或一个SWF与一个本地应用程序)之间进行双向通信。在Flash中,创建LocalConnection实例,然后定义一个连接名称,这样其他应用程序就可以通过这个名称找到并...

    AS3 调用SWF类库

    此外,如果你需要在主SWF和加载的SWF之间进行更复杂的通信,可以使用`LocalConnection`类创建一个本地连接,实现两个SWF之间的消息传递。 以上就是AS3调用SWF类库的基本步骤和关键知识点。在实际项目中,你可能还...

    swf 本地通讯

    "SWF 本地通讯"是指在同一个应用程序或者网页中,两个或多个SWF文件之间进行数据交换和通信的能力。这种通信机制对于实现复杂的Flash应用,如游戏、多媒体交互和富互联网应用程序(RIA)中的模块化设计至关重要。 ...

    flex 与 flash 交互

    5. **XMLSocket和WebSocket**: 对于更高级的网络通信需求,可以使用XMLSocket或WebSocket进行实时数据交换。Flex和Flash都能创建和使用这两种类型的套接字,使得它们能够发送和接收实时数据流。 6. **SWF加载**: ...

    flex与as2交互

    5. **共享数据存储:** 另一个交互途径是通过共享数据存储,如SharedObject,它可以在本地存储数据,并在AS2和AS3之间共享。 在实际应用中,你可能需要处理一些兼容性和安全性问题,比如确保Flash Player支持所需的...

    Flex 弹出窗口的数据传输

    标题中的“Flex 弹出窗口的数据传输”指的是在Adobe Flex应用程序中如何实现在弹出窗口(通常是PopUpWindow或ModalDialog)与主应用程序之间进行数据交互。Flex是一种用于构建富互联网应用程序(RIA)的开放源代码...

    VB和flash交互

    4. **本地连接(LocalConnection)**:在Flash Player 9及更高版本中,引入了本地连接功能,允许在同一台计算机上的不同Flash应用程序之间进行通信。VB可以通过创建本地连接对象来与Flash进行数据交换。 **VB与...

    c++与flash 的交互sample

    6. **本地连接(LocalConnection)**:这是Flash Player提供的一种机制,允许同一台计算机上的不同Flash应用程序之间进行无格式的数据通信。在C++和Flash之间使用本地连接,通常需要一个中间的Flash项目来桥接两者。...

Global site tag (gtag.js) - Google Analytics