专注于 ActionScript 3.0 在各应用领域的研究。
« flash的调试工具alcon用例建模指南 »

AS2与AS3通信

由于当AS3加载AS2时,AS2会在AMV1中运行,
AS3文件跟AS2文件互相都不可以进行操作(跟两个swf独立运行无区别)..
我们常用的解决方法是使用LocalConnection作为他们之前的桥梁..
实现通信进行操作..

下面的例子..
先给AS3进行LocalConnection的运行,,让他处理连接状态(就像一个服务端)
然后AS2使用LocalConnection中的send,调用AS3中的方法

AS3的文档类

  1. package {   
  2.     import flash.display.*;   
  3.     import flash.net.*;   
  4.     import flash.text.*;   
  5.     public class AS3Class extends Sprite{   
  6.         private var server:LocalConnection  
  7.         public function AS3Class(){   
  8.             init()   
  9.         }   
  10.         private function init():void{   
  11.             //初始化   
  12.             server = new LocalConnection()   
  13.             //建立一个本地连接,名字随意,取一个不会取与人重复的名字就ok了   
  14.             server.connect("_AS3_L4cd_2008_08_02")   
  15.             //指定this为LocalConnection的client,这样才可以调用this中的方法(重要)   
  16.             server.client = this  
  17.         }   
  18.         //随便定义一个方法,不带参数的,需要设置为public(重要)   
  19.         public function m1():void{   
  20.             txt.appendText("\rAS3:m1")   
  21.         }   
  22.         //随便定义一个方法,带一个参数,需要设置为public(重要)   
  23.         public function m2(_name:String):void{   
  24.             txt.appendText("\rAS3:m2,caller name:"+_name)   
  25.         }   
  26.     }   
  27. }  

AS2中的代码

  1. var caller:LocalConnection  
  2. //初始化对象,由于这里只需要调用别的LocalConnection的方法,所以这里不需要connect   
  3. caller = new LocalConnection()   
  4. //调用_AS3_L4cd_2008_08_02(AS3中connect的名字)中的m1   
  5. caller.send("_AS3_L4cd_2008_08_02","m1")   
  6. //调用_AS3_L4cd_2008_08_02(AS3中connect的名字)中的m2,前把"L4cd.Net"传到m2的第一个参数   
  7. caller.send("_AS3_L4cd_2008_08_02","m2","L4cd.Net")  

原文:http://l4cd.net/Blog/article.asp?id=54

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 Code detection by Codefense

Copyright 2008-2010 DMH2002's Blog Some Rights Reserved.沪ICP备07021739号