页面内flash之间的通信
通过本地连接,可以在 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 { public function Main() { public function oc(param1:MouseEvent):void { public function ot():void {
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="看到我请复制浏览器链接,然后在新窗口再次打开,这时你会发现另一个我哦。但是请别关掉我,呆会回来看看我说什么?";
_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;
}
lc.send("gyd_pig_act", "abc", _txt.b.text);
_txt.b.text="刚才你写的话发送成功了哦,快去第一个窗口看看:)"
}
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 dynamic public class TXT extends MovieClip public function TXT()
{
import flash.display.*;
import flash.text.*;
{
public var btn:SimpleButton;
public var b:TextField;
public var a:TextField;
{
return;
}
}
}
你可以源文件,源文件中附件中,不过你需要在Flash CS4环境中才能打开。

分类:
已被围观 
发表评论: