flex应用程序和flash动画的通信
iteye是个高手云集的地方,作为刚步入工作的我,在这发表技术文章,压力是灰常的大,嘿嘿,请大家不要喷我,给新人一个发展的空间,也非常欢迎大家能够批评指正。
?
一、flex应用程序加载flash动画,主要有两种方式:
1.通过标签
<mx:SWFLoader id="swfLoader" source="@Embed('assets/images/gongshangbgnew.swf')" />
2.通过类来加载
swfLoginLoader:SWFLoader = new SWFLoader();
swfLoginLoader.load("assets/images/login-new.swf");
?//将整个swf都加载到flex舞台上
this.addElement(swfLoginLoader);
这两种方式还是又差别的,具体的我还没有琢磨透彻,只是通过调试,能够实现了就好。
?
二、flex与flash的通信:
1.在flex应用程序中获取flash的元件,比如按钮,文本框之类的,然后对其进行操作,赋值或者添加事件等等。
??//加载登陆窗口,注意要等到事件完成以后才能够获取对应的元件
???private function loaderLoginWindow(event:Event):void{
????swfLoginLoader.addEventListener(Event.COMPLETE,swfLoadComplete);
????//加载登陆窗口
????swfLoginLoader.load("assets/images/login-new.swf");
????swfLoginLoader.x=300;
????swfLoginLoader.y=180;
???}
???
???//加载登陆窗口完成后
???private function swfLoadComplete(e:Event):void{
????
????/**
???? * 将整个swf都加载到flex舞台上
???? * 此方法将每个flex要用的资源做成单独的swf,需要时才加载进来
???? */
????this.addElement(swfLoginLoader);
????swf = swfLoginLoader.content as MovieClip;
?????//获取按钮添加事件
????swf.loginBtn.addEventListener(MouseEvent.CLICK,doLogin);
????swf.userName.addEventListener(KeyboardEvent.KEY_DOWN,loginnameKeydown);
????swf.password.addEventListener(KeyboardEvent.KEY_DOWN,passwordKeydown);
????swf.closeBtn.addEventListener(MouseEvent.CLICK,doClose);
????stage.focus=swf.userName;
???}
?
2.在flash里边通过编程,添加事件广播,然后在flex应用程序中接收该广播事件。
flash里边的编程:
//提交按钮 来广播一个 事件给Flex
subBtn.addEventListener(MouseEvent.CLICK,sendToFlexHandler);
function sendToFlexHandler(evt:MouseEvent):void
{
?//广播了test事件
?dispatchEvent(new Event("test"));
}
flex里边的接收代码:
?//加载登陆窗口的swf初始化事件
???private function init(event:FlexEvent):void{
????swfLoader.content.addEventListener("test",loaderLoginWindow);
}
这是我写的代码贴出来大家分享分享
?
?
?
?