页面内flash之间的通信

作者Kuma 文章分类 分类:About Codes 文章评论 0条评论 阅读次数 已被围观 2079

通过本地连接,可以在 SWF 文件之间进行实现简单通信,而不用使用 fscommand() 或 JavaScript。LocalConnection 对象只能在运行于同一台客户端计算机上的文件之间进行通信,但这些文件可以在不同的应用程序中运行。例如,浏览器中运行的文件和 Adobe AIR 中运行的 SWF 文件。你可以“使用 connect(connectionName) 方法打开的连接(接收方 LocalConnection 对象)上调用名为 methodName 的方法。与此命令一起使用的对象称作发送方 LocalConnection 对象。 包含发送方对象的 SWF 文件和包含接收方对象的 SWF 文件必须在同一台客户端计算机上运行。 ”(官方文档)。但是Flash对这一命令发送到字节有限制,单个命令发送到字节不能超过40K。

现在贴上一个Flash通信的例子,要想看到实现的效果,你在不关闭本页面的前提下,复制浏览器的链接,然后在新窗口中打开另一个本页面,这时另一个页面的Flash将与本页面的Flash不同,你可以在另一个页面的flash文本框中写一句话,然后点击发送,再返回到本页面,你会看到你发送到文本显示到了本页面的flash的文本框中。当然,你也可以抓取本flash在电脑上打开两次,也可以查看到相同效果。

Flash效果:

AS3:main.as

package {
 import flash.display.*;
 import flash.events.*;
 import flash.net.*;
 import flash.utils.*;
 public class Main extends MovieClip {
  private var msgNum:int=0;
  private var n:String="";
  private var lc:LocalConnection;
  private var _timer:Timer;
  private var _msg2:String="怎么样,我变身了吧?在这里随便写一句话,然后点击发送,再回到前面的窗口看看,你会发现一个有趣的事儿哦:)";
  private var _txt:TXT;
  private var _msg:String="看到我请复制浏览器链接,然后在新窗口再次打开,这时你会发现另一个我哦。但是请别关掉我,呆会回来看看我说什么?";

  public function Main() {
   _txt = new TXT();
   msgNum=0;
   n="";
   config();
   addChild(_txt);
   _txt.btn.addEventListener(MouseEvent.CLICK, oc);
   ot();
  }
  public function abc(param1):void {
   _txt.a.htmlText="下面是你从另一个我哪里发来的话:"+"<FONT FACE='Times New Roman' SIZE='13' COLOR='#000000' LETTERSPACING='0' >"+"\n"+param1+"</FONT>";
  }
  function config() {
   lc = new LocalConnection();
   lc.allowDomain("*");
   try {
    lc.client=this;
    lc.connect("gyd_pig_act");
    n="gyd_pig_act";
    _txt.b.visible=false;
    _txt.btn.visible=false;
    _txt.a.y=_txt.a.y+100;
    _txt.a.x=_txt.a.x+50;
   } catch (error:ArgumentError) {
    _txt.a.visible=false;
    lc.client=this;
    lc.connect("bb");
    n="bb";
    _txt.b.y=_txt.b.y-100;
    _txt.b.x=_txt.b.x+50;
   }
   msgNum=0;
  }

  public function oc(param1:MouseEvent):void {
   lc.send("gyd_pig_act", "abc", _txt.b.text);
   _txt.b.text="刚才你写的话发送成功了哦,快去第一个窗口看看:)"
  }

  public function ot():void {
   var _loc_2:String;
   var _loc_3:String;
   _loc_2 = n == "bb" ? (_msg2) : (_msg);
   _loc_3 = n == "bb" ? ("b") : ("a");
   _txt[_loc_3].text=_txt[_loc_3].text+_loc_2;
  }
 }
}

文档类:TXT.as

package
{
    import flash.display.*;
    import flash.text.*;

    dynamic public class TXT extends MovieClip
    {
        public var btn:SimpleButton;
        public var b:TextField;
        public var a:TextField;

        public function TXT()
        {
            return;
        }
    }
}
 

你可以源文件,源文件中附件中,不过你需要在Flash CS4环境中才能打开。

分类:About Codes
标签: Flash

通告: http://mouselife.net/tb.php?sc=e80ab8&id=28

附件下载:sendMsg.rar 8.65KB
【上一篇】有点小迷茫
【下一篇】贴两个免杀的Webshell

发表评论: