`

as3 swf间通讯——LocalConnection

    博客分类:
  • as3
 
阅读更多

解决两个swf间通讯的问题,

例子:

A.swf源码:

package {
 import flash.display.MovieClip;
 import flash.external.ExternalInterface;
 import flash.system.Security;
 import flash.net.LocalConnection;
 import flash.events.Event;
 import flash.events.StatusEvent;
 import flash.display.StageQuality;
 public class a extends MovieClip {
  var con:LocalConnection;
  var id:Number;
  public function a() {
   stage.quality=StageQuality.MEDIUM;
   Security.allowDomain('*');
   init();
  }

  function init():void {
   con = new LocalConnection();
   con.addEventListener(StatusEvent.STATUS, onStatus);
   if (loaderInfo.parameters["f"]==null) {
    id=10;
   } else {
    id=loaderInfo.parameters["f"];
   }
   this.addEventListener(Event.ENTER_FRAME,onEventFrameHandler);
  }

  function onEventFrameHandler(evt:Event):void {
   txt.text=currentFrame.toString()+ " = lc_name"+id;
   if ((currentFrame==1) || (currentFrame==51) || (currentFrame==101) || (currentFrame==151) || (currentFrame==201)) {
    con.send("lc_name"+id, "lcHandler",currentFrame.toString());
   }
   

  }

  function onStatus(event:StatusEvent):void {
   switch (event.level) {
    case "status" :
     //trace("LocalConnection.send() succeeded");
     break;
    case "error" :
     //trace("LocalConnection.send() failed");
     break;
   }
  }
 }
}

 

B.swf源码:
package {
 import flash.external.ExternalInterface;
 import flash.system.Security;
 import flash.net.LocalConnection;
 import flash.events.Event;
 import flash.events.StatusEvent;
 import flash.display.MovieClip;
 import flash.display.StageQuality;

 public class b extends MovieClip {
  var id:Number;
  private var con:LocalConnection;


  public function b() {
   //stop();
   stage.quality=StageQuality.MEDIUM;
   Security.allowDomain('*');
   init();
   this.addEventListener(Event.ENTER_FRAME,onEventFrameHandler);
  }

  function init():void {
   con = new LocalConnection();
   con.client=this;
   if (loaderInfo.parameters["f"]==null) {
    id=10;
   } else {
    id=loaderInfo.parameters["f"];
   }
   try {
    con.connect("lc_name"+id);
   } catch (error:ArgumentError) {
    txt.text="Can't connect...the connection name is already being used by another SWF";
   }
  }
  public function lcHandler(val:Number):void {
   this.gotoAndPlay(val+1);
   //txt.text='- : '+val;
  }
  function onEventFrameHandler(evt:Event):void {
   txt.text=currentFrame.toString()+' = '+ "lc_name"+id;
  }
 }
}

 

 

注:

  为了避免在多个浏览器上面查看页面效果时,两个swf连接之间的干扰,此例中的:loaderInfo.parameters["f"],是从js那里取了个随机数,来对不同浏览器页面设置不同的连接名,避免同名连接干扰...

分享到:
评论

相关推荐

    As3.0 localConnectionDemo

    总的来说,“As3.0 localConnectionDemo”是一个展示如何利用ActionScript 3.0的LocalConnection进行SWF间通信的实际示例。通过这个示例,开发者可以学习如何在多个SWF组件之间建立安全的数据通道,这对于构建互动性...

    多个swf的通讯

    - AS3的SWF可以直接进行跨脚本通讯(Cross-Scripting),不需要`LocalConnection`。这是因为AS3引入了`ApplicationDomain`类,它可以更直接地访问和使用另一SWF中的类和函数,无需预先定义。 **LocalConnection的...

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

    在Adobe Flash平台上,LocalConnection是AS3(ActionScript 3)提供的一种机制,允许不同的SWF文件在同一台计算机上进行安全的数据通信。这种通信方式在处理跨域问题、实现组件间通信或者创建分布式应用程序时非常...

    AS3 调用SWF类库

    在AS3(ActionScript 3)中,调用SWF类库是一项常见的任务,尤其在构建可重用组件、模块化开发或者加载外部资源时。本文将深入探讨如何使用AS3来加载和交互SWF类库,以及相关的重要知识点。 首先,让我们了解SWF是...

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

    Flex中SWF和其他SWF文件之间的通信原理。该案例中TestLocalConnection为主SWF文件加载了TestLocalConnectionReceiver.SWF,两者之间是在同一个域下的...其他技术细节参见Flex_API中的LocalConnection章节。本机测试通过

    LocalConnection域访问详解

    - `LocalConnection.allowDomain()`:此方法用于设置允许哪些域与当前SWF进行LocalConnection通信。 6. 总结 LocalConnection提供了一种灵活的途径来实现在Flash和Flex应用程序之间的本地通信。理解域访问规则是...

    localconnection

    3. 测试脚本:`test.swf` 可能是一个测试程序,用来验证LocalConnection功能是否正常工作。 理解并掌握Flash LocalConnection的使用对于开发涉及多个Flash组件交互的应用至关重要。通过分析源文件,我们可以学习到...

    flash LocalConnection

    在AS3中,`LocalConnection`位于`flash.net`命名空间下,它的主要作用是创建一个本地连接实例,通过这个名字,其他SWF文件可以找到并建立连接。创建`LocalConnection`实例的基本步骤如下: 1. 实例化`...

    同机两个swf通讯

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

    swf 本地通讯

    总结,SWF本地通讯是实现SWF文件之间互动的关键技术,通过ActionScript的LocalConnection和Loader对象,可以轻松地构建复杂的交互式Flash应用程序。了解并熟练掌握这一技术,对于开发高效、模块化的Flash项目具有...

    SWFBridge as2 as3 通讯

    这种桥接机制通常涉及到在AS2和AS3之间创建一个通信层,通过共享全局变量、使用本地连接(LocalConnection)或者利用Flash Player的其他API来实现数据交换。 在AS2中,代码通常较为简单且易于理解,但在性能和功能...

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

    例如,在SWF文件A中创建一个LocalConnection对象,并在SWF文件B中监听这个对象,即可实现两者之间的数据传输。 - **创建LocalConnection对象**: ```as var conn:LocalConnection = new LocalConnection(); ``` ...

    LocalConnection的问题

    例如,`localconnect.swf`可能是主程序,而`swf1.swf`是一个组件,它们通过LocalConnection传递数据和指令,实现组件与主程序间的互动。 综上所述,LocalConnection是Flash开发中一个强大的工具,允许在SWF文件间...

    flash swf之间传值

    在AS3(ActionScript 3)中,我们可以使用`Loader`类来加载另一个SWF文件。以下是一个基本的加载示例: ```as3 var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ...

    AS3中文版帮助文档

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

    flashas3 api使用手册

    AS3通过LocalConnection和SharedObject类实现了客户端的数据存储。LocalConnection用于在不同SWF之间传递数据,而SharedObject则提供了类似Cookie的本地数据持久化功能。 八、错误处理与调试 AS3的错误处理机制...

    Flash AS3教程

    AS3支持多种网络协议,如HTTP、XMLSocket和LocalConnection,使得你可以创建能够与服务器交换数据的应用。XML和JSON格式的数据解析也是这部分的重点。此外,AS3还提供了本地数据存储的解决方案,如SharedObject,...

    as3_devguide.rar

    10. **本地存储**:使用LocalConnection和SharedObject类,AS3可以实现客户端的数据存储和共享。 11. **Adobe AIR**:AS3还可以用于开发桌面应用程序,通过Adobe AIR框架,开发者可以利用AS3创建跨平台的应用。 12...

    flex与as2交互

    3. **MovieClipLoader:** 如果你有AS2的SWF需要在Flex应用中加载和控制,可以使用`flash.display.MovieClipLoader`类。加载AS2 SWF后,可以访问其公开的属性和方法。 4. **Event Dispatching:** AS2和AS3都可以...

    AS3殿堂之路笔记

    AS3殿堂之路笔记是针对ActionScript 3.0(AS3)编程语言的学习资源,旨在帮助开发者深入理解和熟练掌握这一强大的脚本语言。AS3是Adobe Flash Platform的主要编程语言,广泛应用于网页游戏开发、交互式内容创建以及...

Global site tag (gtag.js) - Google Analytics