Flex与Flash之间的交互
在Flex开发过程中我们常常会调用外部Flash来表现更加绚烂的效果,但是有些时候我们不仅限于调用该外部Flash,还需要与该外部Flash进行交互,已达到更好的效果,下面是尝试着利用Flex与Flash进行交互的详细介绍:
Flex部分,在Flex中添加如下代码:
<mx:Script>
<![CDATA[
import mx.controls.Alert;
//测试函数,flash调用Flex的函数
public function FlashTest(v:String):void{
Alsert.show(v,"测试");
}
//加载完外部Flash后初始化Flash函数
public function loadSWF():void{
Object(swfLoader.content).InitApp(this);
}
//Flex调用Flash函数
public function invokeFlash():void{
Object(swfLoader.content).swfShowText((Math.random()*100).toString());
}
]]>
</mx:Script>
<mx:SWFLoader id="swfLoader" x="56" y="37" source="flash/test.swf" complete="loadSWF()"/>
<mx:Button x="44" y="209" label="调用flash函数" click="invokeFlash()"/>
Flash部分的代码:
在第一帧加入以下代码:
var flexApp:Object;
function InitApp(ap:Object):void{
this.flexApp=ap;
}
myBtn.addEventListener(MouseEvent.CLICK,onClick);
function onClick(e:MouseEvent):void{
flexApp.testf("我是以参数的形式传过来的!");
}
function swfShowText(v:String):void{
txtTest_txt.text=v;
}
function toFlex(eve:TimerEvent):void{
flexApp.FlashTest();
}
在以上代码中txtTest_txt为一个动态文本框,用来接收Flex传递进来的参数,myBtn是自定义的一个按钮元件,InitApp是用来初始化该Flash,并接收Flex传递来的对象