Flash可以做很多丰富表现力的动画效果和交互效果,这是flex不能比拟的。
但并不意味着Flex不能实现同样的效果。
Flex程序整合Flash并不难,因为他们都是用ActionScript语言。
Flex同样可以控制Flash
在Flex中插入Flash是提高程序交互性的好方法。
可以把Flex和Flash的优点都发挥出来。
但是有一个AS版本的问题:当加载swf文件时,被加载的文件和主文件都运行在FlashPlayer中。
Flex采用了As3.0语言,对应的swf文件被播放器的AVM2(虚拟机)解释执行,
当加载的swf不是as3.0语言时,播放器会使用AVM1解释执行。
这2个版本无法传递信息,导致Flex无法确定Swf文件的位置,也无法使用里面的函数、变量。使得交互大打折扣。
使用flash.net.LocalConnection对象可以巧妙的解决这个问题。可以避开播放器限制,不管swf运行在AVM1上
还是AVM2上,都可以相互通讯。
例子:
Flex(as3的swf) 传递 数值 给一个as2的swf
1
2 <?xml version="1.0" encoding="utf-8"?>
3 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
4 <mx:Script>
5 <![CDATA[
6 import flash.net.LocalConnection;//导入LocalConnection类
7 private var CNum:Number=0;//Flex变量 传递给as2的swf
8 private var sendConn:LocalConnection;
9 //
10 internal function initApp():void{
11 //创建一个 LocalConnection实例
12 sendConn = new LocalConnection();
13 //
14 }
15
16 internal function addNum():void{
17 CNum++;
18 trace(CNum+" cc")
19 //send(连接名:String,Flash里的方法:String,参数)
20 sendConn.send("flexToSwf","showNum",CNum);
21 }
22 public function reduceNum():void{
23 CNum--;
24 trace(CNum+" dd")
25 //send(连接名:String,Flash里的方法:String,参数)
26 sendConn.send("flexToSwf","showNum",CNum);
27
28 }
29 ]]>
30 </mx:Script>
31 <mx:SWFLoader x="30" y="10" source="test.swf"/>
32 <mx:Button x="48" y="403.5" label="参数+1" click="addNum()"/>
33 <mx:Button x="99" y="403.5" label="参数-1" click="reduceNum()"/>
34
35
36 </mx:Application>
37
38
39
2 <?xml version="1.0" encoding="utf-8"?>
3 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
4 <mx:Script>
5 <![CDATA[
6 import flash.net.LocalConnection;//导入LocalConnection类
7 private var CNum:Number=0;//Flex变量 传递给as2的swf
8 private var sendConn:LocalConnection;
9 //
10 internal function initApp():void{
11 //创建一个 LocalConnection实例
12 sendConn = new LocalConnection();
13 //
14 }
15
16 internal function addNum():void{
17 CNum++;
18 trace(CNum+" cc")
19 //send(连接名:String,Flash里的方法:String,参数)
20 sendConn.send("flexToSwf","showNum",CNum);
21 }
22 public function reduceNum():void{
23 CNum--;
24 trace(CNum+" dd")
25 //send(连接名:String,Flash里的方法:String,参数)
26 sendConn.send("flexToSwf","showNum",CNum);
27
28 }
29 ]]>
30 </mx:Script>
31 <mx:SWFLoader x="30" y="10" source="test.swf"/>
32 <mx:Button x="48" y="403.5" label="参数+1" click="addNum()"/>
33 <mx:Button x="99" y="403.5" label="参数-1" click="reduceNum()"/>
34
35
36 </mx:Application>
37
38
39
打开Flash ,新建一个As2的Flash
按F9 输入代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)