flex与flash编译后都为swf文件,所以之间的交互也比较方便,但要注意版本的问题,如果使用的AS3.0,那flash player在解析的时候会自动的使用AVM2处理,而使用AS2.0或者AS1.0的swf在运行时,flash player会自动的使用AVM1处理,,那么使用Action Script3.0的flex与flash as2就无法直接进行交互,好在action script2.0和AS3.0里都有LocalConnection可以来解决这个问题,使用LocalConnection的好处是不用管flex和flash各自使用的哪一个版本的Action Script,都可以进行通信交互,下面我们就来看一下其交互的实现
flash端(我这里用的都是AS3,AS2的可以修改一下)
b1为一按钮,hi为一动态文本框
- stop();
- var conn:LocalConnection = new LocalConnection(); conn.addEventListener(StatusEvent.STATUS,onStatus);
- conn.connect("fromFlex");
- conn.client = this;
- b1.addEventListener(MouseEvent.CLICK,onClick);
- function onClick(event:MouseEvent):void
- {
- conn.send("fromFlash","gogo");
- }
- function onStatus(event:StatusEvent):void
- {
- hi.text=event.level;
- }
- function showText(s:String):void
- {
- hi.text = s;
- }
stop();
var conn:LocalConnection = new LocalConnection(); conn.addEventListener(StatusEvent.STATUS,onStatus);
conn.connect("fromFlex");
conn.client = this;
b1.addEventListener(MouseEvent.CLICK,onClick);
function onClick(event:MouseEvent):void
{
conn.send("fromFlash","gogo");
}
function onStatus(event:StatusEvent):void
{
hi.text=event.level;
}
function showText(s:String):void
{
hi.text = s;
}
flex
- function dh(event:Event):void
- {
- ddd.text="hi,FLEX/FLASH";
- conn = new LocalConnection();
- conn.client = this; conn.connect("fromFlash");
- conn.addEventListener(StatusEvent.STATUS,onStatus);
- }
- function onStatus(event:StatusEvent):void
- {
- ddd.text = event.level;
- }
- public function gogo():void
- {
- ddd.text="FLASH访问";
- Alert.show("wfwefwefwdf");
- }
- function goto(event:MouseEvent):void
- {
- conn.send("fromFlex","showText","hahaha");
- }