as3.0针对两个独立swf的通信有个专门的类-----LocalConnection
既然是两个独立的swf进行通信,那么就将两个swf的名字暂叫:A(派发器),B(接收器)。查阅as3.0帮助后,用了下他们提供的例子,还挺好用,在此和大家分享下。
A的源码:
// Code in LocalConnectionSenderExample.as
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.LocalConnection;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.events.StatusEvent;
import flash.text.TextFieldAutoSize;
public class LocalConnectionSenderExample extends Sprite {
private var conn:LocalConnection;
// UI elements
private var messageLabel:TextField;
private var message:TextField;
private var sendBtn:Sprite;
public function LocalConnectionSenderExample() {
buildUI();
sendBtn.addEventListener(MouseEvent.CLICK, sendMessage);
conn = new LocalConnection();
conn.addEventListener(StatusEvent.STATUS, onStatus);
}
private function sendMessage(event:MouseEvent):void {
//conn.send("A和B链接标示","A调用B中的方法","A与B商量好的传输对象");
conn.send("myConnection","lcHandler", message.text);
}
private function onStatus(event:StatusEvent):void {
switch (event.level) {
case "status":
trace("LocalConnection.send() succeeded A向B派发成功");
break;
case "error":
trace("LocalConnection.send() failed A向B派发失败");
break;
}
}
private function buildUI():void {
const hPadding:uint = 5;
// messageLabel
messageLabel = new TextField();
messageLabel.x = 10;
messageLabel.y = 10;
messageLabel.text = "Text to send:";
messageLabel.autoSize = TextFieldAutoSize.LEFT;
addChild(messageLabel);
// message
message = new TextField();
message.x = messageLabel.x + messageLabel.width + hPadding;
message.y = 10;
message.width = 120;
message.height = 20;
message.background = true;
message.border = true;
message.type = TextFieldType.INPUT;
addChild(message);
// sendBtn
sendBtn = new Sprite();
sendBtn.x = message.x + message.width + hPadding;
sendBtn.y = 10;
var sendLbl:TextField = new TextField();
sendLbl.x = 1 + hPadding;
sendLbl.y = 1;
sendLbl.selectable = false;
sendLbl.autoSize = TextFieldAutoSize.LEFT;
sendLbl.text = "Send";
sendBtn.addChild(sendLbl);
sendBtn.graphics.lineStyle(1);
sendBtn.graphics.beginFill(0xcccccc);
sendBtn.graphics.drawRoundRect(0, 0, (sendLbl.width + 2 + hPadding + hPadding), (sendLbl.height + 2), 5, 5);
sendBtn.graphics.endFill();
addChild(sendBtn);
}
}
}
B的源码:
// Code in LocalConnectionReceiverExample.as
package {
import flash.display.Sprite;
import flash.net.LocalConnection;
import flash.text.TextField;
public class LocalConnectionReceiverExample extends Sprite {
private var conn:LocalConnection;
private var output:TextField;
public function LocalConnectionReceiverExample() {
buildUI();
conn = new LocalConnection();
conn.client = this;//this:建立连接的对象
try {
conn.connect("myConnection");
} catch (error:ArgumentError) {
trace("Can't connect...the connection name is already being used by another SWF 无法连接...连接的名称已经被另一个SWF使用");
}
}
/**
* 被调用的方法
* @param msg 传输的对象
*/
public function lcHandler(msg:String):void {
output.appendText(msg + "\n");
}
private function buildUI():void {
output = new TextField();
output.background = true;
output.border = true;
output.wordWrap = true;
addChild(output);
}
}
}
注意:他们之间的是需要一个connect连接的,一个connect可以多个A派发,但是接收方只能有一个。意思也可以这么说,A可以打开多个窗口,但是B只能打开一个,如果B打开多个,也只能响应第一个打开的。
ps: 例子就是这么个例子,代码就是这么个代码。 至于你怎么扩展功能,那就看你水平了!嘿嘿……
相关推荐
这两个文件很可能是用于创建两个独立的SWF对象,它们将作为LocalConnection通信的客户端。每个SWF可以被视为一个独立的应用模块,它们可能包含不同的功能,但需要共享数据或触发特定操作。在实际项目中,这些子SWF...
这个“AS3.0自学电子教案”显然是一个全面的学习资源,旨在帮助用户掌握AS3.0的核心概念和技术。 1. **AS3.0简介**: - AS3.0是ActionScript的重大升级,与之前的AS2.0相比,它具有更强的类型检查、更好的性能和更...
4. **DisplayObject和DisplayObjectContainer**: 这是AS3.0中的两个核心图形类。DisplayObject是所有可显示对象的基类,包括形状、文本、位图等。DisplayObjectContainer则是一个容器,可以包含其他DisplayObject,...
创建LocalConnection实例时,需要指定一个唯一的名字,这个名字作为连接的标识符,用于两个想要通信的SWF文件建立连接。例如,我们可以创建一个名为"myConnection"的LocalConnection实例: ```actionscript var ...
此外,代码中还使用了`LocalConnection`,这是AS3.0中的一个类,用于在不同SWF之间建立通信。在这里,它可能用于实现某种形式的同步或通信,但具体用途没有在提供的代码段中明确说明。 总的来说,这个Flash AS3.0...
- 两个SWF需要在同一个目录下或者Flex应用通过`SWFLoader`加载Flash SWF,以便它们可以在运行时互相通信。 **AS3的SWF之间通讯:** - AS3的SWF可以直接进行跨脚本通讯(Cross-Scripting),不需要`LocalConnection`...
除了SWF文件之间的通信外,有时候还需要实现C#应用程序与SWF文件之间的通信。这通常发生在.NET应用程序需要与SWF文件进行交互的场景下。 **1. 使用Adobe AIR**: Adobe AIR (Adobe Integrated Runtime) 提供了一个...
在同一个域(例如http://www.domain.com)内的两个SWF文件可以直接通过LocalConnection进行通信。无需额外的安全设置,只需确保连接名称在connect()和send()方法中保持一致。例如,`receivingLC.connect('...
当我们谈论"同机两个swf通讯"时,这意味着我们有两个不同的SWF文件,它们需要在同一个设备上相互通信,交换数据或触发特定的交互行为。这种通信通常通过Flash的本地连接(LocalConnection)功能实现。 本地连接是...
此外,如果你需要在主SWF和加载的SWF之间进行更复杂的通信,可以使用`LocalConnection`类创建一个本地连接,实现两个SWF之间的消息传递。 以上就是AS3调用SWF类库的基本步骤和关键知识点。在实际项目中,你可能还...
《ActionScript 3.0本地通信》是针对AS3编程技术的一个重要篇章,主要探讨了在Flash Player或Adobe AIR环境中如何实现本地数据的存取和交互。ActionScript 3.0作为Flash平台的核心脚本语言,其在本地通信方面的功能...
在IT行业中,`LocalConnection` 是 Adobe Flash 技术中的一个重要组成部分,主要用于在同一台计算机上的不同Flash内容之间创建通信通道。这个技术允许不同的Flash Player实例或者同一实例内的不同安全沙箱之间进行...
在ActionScript 3.0中,本地连接(LocalConnection)是一个关键的概念,它主要用于实现同一台计算机上两个或多个Flash应用之间的通信。这些Flash应用可以是独立的SWF文件、嵌入式可执行文件,或是网页中的SWF组件。...
10. **本地存储**:通过LocalConnection和SharedObject类,AS3可以实现本地数据的存储和共享。 11. **ActionScript 3.0类库**:包括Flash Player API、Flash的内置类库如Math、Date、Array等,以及第三方库的使用...
在提供的文件列表中,我们看到`localconnect.fla`、`swf1.fla`等,这些可能是两个需要通过LocalConnection通信的Flash项目。例如,`localconnect.swf`可能是主程序,而`swf1.swf`是一个组件,它们通过...
该案例中TestLocalConnection为主SWF文件加载了TestLocalConnectionReceiver.SWF,两者之间是在同一个域下的通信,工程代码编译路径需要下载者手动修改下。其他技术细节参见Flex_API中的LocalConnection章节。本机...
Flash AS4_Samples是一个专注于学习ActionScript 3.0的资源库,它包含了丰富的实例,帮助开发者深入理解和掌握AS3.0的强大功能。ActionScript 3.0是Flash平台的核心编程语言,它的出现使得Flash不再仅仅局限于简单的...
在Flash开发中,SWF文件间的通信是一个常见的需求,特别是在构建多组件或模块化应用时。本篇文章将详细探讨如何在A.SWF加载B.SWF的过程中实现值的传递,以及B.SWF如何接收这些值。 首先,理解SWF文件加载的基本原理...
使用LocalConnection类可以实现在同一台计算机上的不同Flash应用间的通信。 "ActionScript 3.0 编程.pdf"这份文档很可能是关于ActionScript 3.0的教程或参考手册,它可能涵盖从基础知识到高级特性的全面内容,包括...
在本文中,我们将深入探讨Flash中的`LocalConnection`机制,特别是在AS3中如何与AS2进行通信。`LocalConnection`是Adobe Flash Player提供的一种功能,它允许在同一台计算机上运行的不同Flash应用程序(SWF文件)...