zoukankan      html  css  js  c++  java
  • [ActionScript 3.0] LocalConnection示例

    下例包含两个 ActionScript 类,这两个类应当编译到两个单独的 SWF 文件中:

    在 LocalConnectionSenderExample SWF 文件中,将创建 LocalConnection 实例,并且当按下按钮时使用 call() 方法通过名为“myConnection”的连接调用 SWF 文件中名为 lcHandler 的方法,调用时将 TextField 的内容作为参数传递。

    在 LocalConnectionReceiverExample SWF 文件中,将创建 LocalConnection 实例并调用 connect() 方法,将此 SWF 文件指定为发送到名为“myConnection”的连接的消息的接收方。此外,此类还包括一个名为 lcHandler() 的公共方法,此方法就是 LocalConnectionSenderExample SWF 文件调用的方法。调用时,作为参数传入的文本将被追加到舞台的 TextField 中。

    注意:为了测试此示例,必须将两个 SWF 文件同时加载到同一台计算机上。

    // 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("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;
                }
            }
            
            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);
            }
        }
    }

     

    LocalConnectionReceiverExample.as
    // 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;
                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 {
                output.appendText(msg + "
    ");
            }
            
            private function buildUI():void {
                output = new TextField();
                output.background = true;
                output.border = true;
                output.wordWrap = true;
                addChild(output);
            }
        }
    }
    
    
    
    

    --------------------------------------------------------------------------------

  • 相关阅读:
    数据结构与算法-字符串与字符串匹配算法
    操作系统-PV操作的原理和几种常见问题
    操作系统-进程(8)-临界区管理
    利用队列实现逐行打印杨辉三角形的前n行
    操作系统-进程(7)死锁和银行家算法
    计算机网络-网络层(6)ICMP协议
    操作系统-进程(6)管程
    计算机网络-链路层(5)点对点链路控制
    操作系统-进程(5)进程通信机制
    RTSP/RTMP流媒体协议网页无插件直播视频平台浏览器请求地址自带尾缀符解释说明
  • 原文地址:https://www.cnblogs.com/frost-yen/p/5301849.html
Copyright © 2011-2022 走看看