`
ch_kexin
  • 浏览: 898984 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

as3.0针对两个独立swf的通信有个专门的类-----LocalConnection

 
阅读更多

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:  例子就是这么个例子,代码就是这么个代码。   至于你怎么扩展功能,那就看你水平了!嘿嘿……

分享到:
评论

相关推荐

    As3.0 localConnectionDemo

    这两个文件很可能是用于创建两个独立的SWF对象,它们将作为LocalConnection通信的客户端。每个SWF可以被视为一个独立的应用模块,它们可能包含不同的功能,但需要共享数据或触发特定操作。在实际项目中,这些子SWF...

    AS3.0自学电子教案

    这个“AS3.0自学电子教案”显然是一个全面的学习资源,旨在帮助用户掌握AS3.0的核心概念和技术。 1. **AS3.0简介**: - AS3.0是ActionScript的重大升级,与之前的AS2.0相比,它具有更强的类型检查、更好的性能和更...

    AS3.0-CS4最新中文帮助+.rar

    4. **DisplayObject和DisplayObjectContainer**: 这是AS3.0中的两个核心图形类。DisplayObject是所有可显示对象的基类,包括形状、文本、位图等。DisplayObjectContainer则是一个容器,可以包含其他DisplayObject,...

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

    创建LocalConnection实例时,需要指定一个唯一的名字,这个名字作为连接的标识符,用于两个想要通信的SWF文件建立连接。例如,我们可以创建一个名为"myConnection"的LocalConnection实例: ```actionscript var ...

    Flash AS3.0制作心形文字

    此外,代码中还使用了`LocalConnection`,这是AS3.0中的一个类,用于在不同SWF之间建立通信。在这里,它可能用于实现某种形式的同步或通信,但具体用途没有在提供的代码段中明确说明。 总的来说,这个Flash AS3.0...

    多个swf的通讯

    - 两个SWF需要在同一个目录下或者Flex应用通过`SWFLoader`加载Flash SWF,以便它们可以在运行时互相通信。 **AS3的SWF之间通讯:** - AS3的SWF可以直接进行跨脚本通讯(Cross-Scripting),不需要`LocalConnection`...

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

    除了SWF文件之间的通信外,有时候还需要实现C#应用程序与SWF文件之间的通信。这通常发生在.NET应用程序需要与SWF文件进行交互的场景下。 **1. 使用Adobe AIR**: Adobe AIR (Adobe Integrated Runtime) 提供了一个...

    LocalConnection域访问详解

    在同一个域(例如http://www.domain.com)内的两个SWF文件可以直接通过LocalConnection进行通信。无需额外的安全设置,只需确保连接名称在connect()和send()方法中保持一致。例如,`receivingLC.connect('...

    同机两个swf通讯

    当我们谈论"同机两个swf通讯"时,这意味着我们有两个不同的SWF文件,它们需要在同一个设备上相互通信,交换数据或触发特定的交互行为。这种通信通常通过Flash的本地连接(LocalConnection)功能实现。 本地连接是...

    AS3 调用SWF类库

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

    04.ActionScript 3.0本地通信pdf

    《ActionScript 3.0本地通信》是针对AS3编程技术的一个重要篇章,主要探讨了在Flash Player或Adobe AIR环境中如何实现本地数据的存取和交互。ActionScript 3.0作为Flash平台的核心脚本语言,其在本地通信方面的功能...

    localconnection

    在IT行业中,`LocalConnection` 是 Adobe Flash 技术中的一个重要组成部分,主要用于在同一台计算机上的不同Flash内容之间创建通信通道。这个技术允许不同的Flash Player实例或者同一实例内的不同安全沙箱之间进行...

    ActionScript 3.0本地通信.

    在ActionScript 3.0中,本地连接(LocalConnection)是一个关键的概念,它主要用于实现同一台计算机上两个或多个Flash应用之间的通信。这些Flash应用可以是独立的SWF文件、嵌入式可执行文件,或是网页中的SWF组件。...

    AS3中文版帮助文档

    10. **本地存储**:通过LocalConnection和SharedObject类,AS3可以实现本地数据的存储和共享。 11. **ActionScript 3.0类库**:包括Flash Player API、Flash的内置类库如Math、Date、Array等,以及第三方库的使用...

    LocalConnection的问题

    在提供的文件列表中,我们看到`localconnect.fla`、`swf1.fla`等,这些可能是两个需要通过LocalConnection通信的Flash项目。例如,`localconnect.swf`可能是主程序,而`swf1.swf`是一个组件,它们通过...

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

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

    Flash as4_Samples

    Flash AS4_Samples是一个专注于学习ActionScript 3.0的资源库,它包含了丰富的实例,帮助开发者深入理解和掌握AS3.0的强大功能。ActionScript 3.0是Flash平台的核心编程语言,它的出现使得Flash不再仅仅局限于简单的...

    flash swf之间传值

    在Flash开发中,SWF文件间的通信是一个常见的需求,特别是在构建多组件或模块化应用时。本篇文章将详细探讨如何在A.SWF加载B.SWF的过程中实现值的传递,以及B.SWF如何接收这些值。 首先,理解SWF文件加载的基本原理...

    ActionScript 3.0 编程.rar

    使用LocalConnection类可以实现在同一台计算机上的不同Flash应用间的通信。 "ActionScript 3.0 编程.pdf"这份文档很可能是关于ActionScript 3.0的教程或参考手册,它可能涵盖从基础知识到高级特性的全面内容,包括...

    flash LocalConnection

    在本文中,我们将深入探讨Flash中的`LocalConnection`机制,特别是在AS3中如何与AS2进行通信。`LocalConnection`是Adobe Flash Player提供的一种功能,它允许在同一台计算机上运行的不同Flash应用程序(SWF文件)...

Global site tag (gtag.js) - Google Analytics