首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

flex应用程序跟flash动画的通信

2012-09-05 
flex应用程序和flash动画的通信iteye是个高手云集的地方,作为刚步入工作的我,在这发表技术文章,压力是灰常

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);
}

这是我写的代码贴出来大家分享分享

?

?

?

?

热点排行