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);
}
这是我写的代码贴出来大家分享分享
<?xml version="1.0" encoding="utf-8"?> <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="900" height="800" fontSize="12" cornerRadius="3" showCloseButton="false" paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0" xmlns:ns1="*" modalTransparency="0" modalTransparencyColor="#FFFFFF" xmlns:ns2="com.ylzinfo.widget.*" xmlns:YLZMap="com.ylzinfo.widget.YLZMap.*" creationComplete="init(event)" headerHeight="0"> <mx:Script> <![CDATA[ import com.ylzinfo.commons.Globals; import com.ylzinfo.local.LoginContext; import com.ylzinfo.net.RemoteService; import com.ylzinfo.net.RequestEntity; import com.ylzinfo.net.ResponseEntity; import com.ylzinfo.net.trans.ZReportTransmitter; import com.ylzinfo.sysmanager.SystemUtil; import com.ylzinfo.sysmanager.entity.Sysorg; import com.ylzinfo.sysmanager.entity.Sysrole; import com.ylzinfo.sysmanager.entity.Sysuser; import com.ylzinfo.util.MD5; import mx.controls.Alert; import mx.controls.SWFLoader; import mx.core.Application; import mx.core.FlexGlobals; import mx.core.UIComponent; import mx.events.FlexEvent; import mx.managers.FocusManager; import mx.managers.PopUpManager; import mx.managers.SystemManager; import mx.rpc.AbstractOperation; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; private var swfLoginLoader:SWFLoader = new SWFLoader(); private var swf:MovieClip; //窗口弹出调用的方法 public static function show():LoginWindow{ var login:LoginWindow=LoginWindow(PopUpManager.createPopUp( Application.application as DisplayObject, LoginWindow , true)); PopUpManager.centerPopUp(login); //居中 return login; } //加载登陆窗口的swf初始化事件 private function init(event:FlexEvent):void{ swfLoader.content.addEventListener("Login",loaderLoginWindow); } //加载登陆窗口 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; } private function doClose(event:MouseEvent){ this.removeChild(swfLoginLoader); } private function doLogin(event:MouseEvent){ if(swf.userName.text==null || swf.userName.text==''){ Alert.show("用户名不能为空","提示"); swf.userName.setFocus(); return; } if(swf.password.text==null || swf.password.text==''){ Alert.show("密码不能为空","提示"); swf.password.setFocus(); return; } var id:String=swf.userName.text; var ps:String=MD5.getInstance().getMD5(swf.password.text); var params:Array=new Array(); params["username"]=id; params["passwd"]=ps; var rs:RemoteService=new RemoteService(Globals.SERVICE_LOGIN,"正在验证用户信息......"); rs.sendParameter(params,onLoginResult,null); } private function onLoginResult(res:ResponseEntity):void{ if(res.type=="data"){ //登陆成功 //关闭登陆对话框 close(); Application.application.loadComplete(); //显示加载窗体 //加载菜单 SystemUtil.loadFunctions(); //保存登陆参数 var user:Sysuser=new Sysuser(); var roles:Array=new Array(); var org:Sysorg=new Sysorg(); var rows=res.datas; for(var i=0;i<rows.length;i++){ if(rows[i].username!=undefined && rows[i].username!=null && rows[i].username!=''){ user.userid=rows[i].userid; user.username=rows[i].username; user.passwd=rows[i].passwd; user.realname=rows[i].realname; user.orgid=rows[i].orgid; } if(rows[i].orgid!=undefined && rows[i].orgid!=null && rows[i].orgid!='' && rows[i].orgname!=undefined && rows[i].orgname!=null && rows[i].orgname!='' ){ org.orgid=rows[i].orgid; org.orgname=rows[i].orgname; org.parent=rows[i].parent; } if(rows[i].roleid!=undefined && rows[i].roleid!=null && rows[i].roleid!='' ){ var role:Sysrole=new Sysrole(); role.roleid=rows[i].roleid; role.rolename=rows[i].rolename; role.orgid=rows[i].orgid; roles.push(role); } } user.sysorg=org; user.sysroles=roles; //设置登陆环境变量 LoginContext.loginname=user.username; LoginContext.userid=user.userid; LoginContext.password=user.passwd; LoginContext.realname=user.realname; LoginContext.sessionid=res.sessionid; SystemUtil.currentUser=user; //加载编码 SystemUtil.reloadSyscode(); //SystemUtil.loadLocalDB(); //加载用户产用菜单 SystemUtil.loadUserMenu(); //加载统计报表 SystemUtil.loadReports(); //加载公告 SystemUtil.loadBulletin(); //处理即时通讯 FlexGlobals.topLevelApplication.imsLogin(); }else{ //username.setSelection(0,passwd.text.length); } } private function loginnameKeydown(e:KeyboardEvent){ var code=e.keyCode; if(code==9){ stage.focus=swf.password; } } private function passwordKeydown(e:KeyboardEvent){ var code=e.keyCode; if(code==9){ stage.focus=swf.loginBtn; } } public function close():void{ PopUpManager.removePopUp(this); } ]]> </mx:Script> <mx:SWFLoader id="swfLoader" source="@Embed('assets/images/gongshangbgnew.swf')" width="950" height="650"/> </mx:TitleWindow>
相关推荐
4. **动画和效果**:Flash 的强项在于动画制作,Flex 应用程序可以通过导入和播放 Flash 动画来增强用户体验。"Chapter01" 可能包含了一些关于如何在 Flex 中集成 Flash 动画的示例。 5. **事件处理**:Flex 和 ...
在Flash Builder 3中开发Flex应用程序,用户可以利用其强大的集成开发环境(IDE),包括代码编辑、调试和性能分析工具,简化开发流程。Flash Builder 3是专为Flex和ActionScript开发设计的,提供代码提示、自动完成...
Flex基于ActionScript 3.0,主要用于构建富互联网应用程序(RIA),而Flash则是著名的动画和多媒体创作工具,其内容可以嵌入到网页中进行播放。尽管两者在功能上有所重叠,但它们各自具有独特的优点,且可以相互配合...
在Flex开发中,与外部数据通信是至关重要的,这使得Flex应用程序能够从服务器获取和更新实时信息。Flex提供了三种主要的数据通信方式:HTTPService、WebService和Remoting。 **4.1.1 使用HTTPService** ...
Flex和Flash CS交互是开发富互联网应用程序(RIA)时常用的一种技术组合,它允许开发者利用Flex的强大学习和开发框架,结合Flash CS的动画和视觉设计能力,创建出交互丰富的Web应用。以下是对这个主题的详细解释: ...
通过这种方式,可以实现Flex UI和Flash动画或交互内容的集成。 7. **Flex组件嵌入Flash**: 反过来,虽然不常见,但Flash也可以嵌入Flex组件。这通常需要使用Flex编译器创建一个SWC库,然后在Flash中引用这个库并...
通过 FABridge,ActionScript(Flex 的编程语言)和 JavaScript 之间可以进行双向通信,使得 Flash 内容能够与 Ajax 应用程序中的数据和功能进行交互。 在开始集成之前,开发者需要准备以下工具和技能: 1. ...
第五章和第六章可能会探讨FLEX中的数据服务,如AMF通信、Web服务调用和 BlazeDS/LiveCycle Data Services的使用,让FLEX应用程序能够与后端服务器无缝交互,实现数据的获取和更新。 第七章至第九章可能涉及更高级的...
在IT行业中,Flex和Flash是两种非常重要的技术,它们在创建富互联网应用程序(RIA)时起着关键作用。本文将深入探讨Flex与Flash之间的交互,以及如何利用它们来构建动态、交互性强的Web应用程序。 Flex是由Adobe...
Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA),而Flash则是用于创建动画、图形和交互式内容的多媒体平台。两者都基于Adobe Flash Player运行,因此在某些场景下,它们可以互相调用...
Flex是Adobe公司推出的一种开放源代码的富互联网应用程序(Rich Internet Application,RIA)框架,它基于ActionScript编程语言和MXML标记语言,用于构建具有交互性强、图形表现力丰富的Web应用程序。 本书的主要...
Flex 4.5,也被称为Flash Builder 4.5,是一款强大的集成开发环境(IDE),用于创建富互联网应用程序(RIA)和移动应用程序,特别适用于构建跨平台的Android应用。 1. **Flex SDK和Flash Builder 4.5**:Flex SDK是...
5. **数据绑定**:Flex支持双向数据绑定,使得UI状态和应用程序数据可以自动保持同步。在控制Flash元件时,数据绑定可能是关键功能。 6. **事件处理**:Flash元件的交互通常依赖于事件,如鼠标点击、键盘输入等。博...
Flash主要专注于动画和多媒体内容的创作,而Flex则更适合于构建结构化的、数据驱动的应用程序。 在Flex和Flash之间进行通信,通常涉及到以下技术: 1. LocalConnection:这是AS3中内置的一个类,用于在同一台机器...
FLEX是一种基于MXML和ActionScript的开放源代码框架,用于构建富互联网应用程序(RIA)。它提供了一套图形用户界面组件库,简化了复杂的Web应用和游戏的开发。ActionScript 3.0是FLEX的主要编程语言,相比于之前的...
“Flash和Flex交互 区域图”这一主题,主要是探讨如何在Flash和Flex之间实现有效的数据通信和交互,以及如何利用这些技术来创建区域图。区域图通常用于表示地理位置、行政区域或任何其他具有特定分区的数据可视化。 ...
2. **SWF对象的嵌入**:在Flex项目中,可以通过`flash.display.MovieClip`类来嵌入Flash SWF文件,这样可以在Flex应用程序中播放Flash动画或者使用已有的Flash组件。 3. **ActionScript 3.0的同步与异步通信**:在...
在IT行业中,Flex和Flash是两种非常重要的技术,它们在创建富互联网应用程序(RIA)时发挥了巨大作用。本文将深入探讨“Flex与Flash组合开发”的最佳实践,旨在帮助开发者更高效地利用这两种技术来构建交互性强、...
在游戏开发领域,FLEX和ActionScript是Adobe提供的两种核心技术,用于创建丰富的互联网应用程序(RIAs),特别是Flash游戏。FLEX是一种开源框架,基于MXML和ActionScript,它提供了强大的图形用户界面(GUI)组件库...