您的位置:首页 > 其它

Flex 应用开发实战笔记

2012-10-11 11:06 274 查看

企业开发基础

查看mxml翻译成的as代码

设置编译参数:
在属性的flex compiler -keep-generated-actionscript=true

源代码路径下generated文件夹

IMXMLObject接口

对于不可视化组件(不是继承于UIComponent)如果实现了IMXMLObject接口,当以标签的方式创建组件时,会自动调用initialized方法,使得不可视对象可以访问它所在的document对象。

MetaData Inspectable的作用:为属性提供一些提示信息,如属性的类型、枚举的合法值、默认值等

客户端MVC

每个功能有一个MXML和AS类文件,as文件实现模型和在模型上的操作(如获取远程数据、排序或过滤)。

Mxml绑定as中的模型对象,如{ },而模型无需知道视图。

用户操作时,MXML响应事件,调用as中的方法改变数据,再通过绑定机制自动刷新到MXML中。

异步调用

问题:

模型数据不一致:flex不会阻塞当前线程,用户可能会以不同的参数多次对同一个远程调用,由于无法保证返回的顺序,则可能调用的参数和得到的结果不匹配。

反复误操作:异步调用时间长,用户多次点击按钮

解决方法:

弹出一个模式对话框,同时显示提示文字和进度条

Flex企业开发中的主要元素

Flex Application

System Manager

是Flex应用的主控者,是Flash Player实例化的第一个类,存储了主应用窗口的大小和位置信息,子组件、内嵌字体、样式和document对象

Flex编译会只包含两帧,第一帧包含systemManager,preloader,downloadProcessBar和少量工具类。第二帧包含应用代码和内嵌资源。

Creation_complete表示所有的子对象建立完成,application_complete表示全部子对象初始化完成。

Preloader

负责监听Application RSL和模块的下载和初始化状态,并生成相应的进度条事件。默认情况下使用DownloadProgressBar作为系统默认的加载显示类。

加载现实类必须实现IPreloaderDisplay接口

创建自定义的加载显示类

1.
修改默认显示类的属性:继承于DownloadProgressBar,修改属性和覆写方法,并将新的实现类指定给Application的preloader。其中backgroundImage backgroundSize
backgroundAlpha backgroundColor需要覆写get方法, backgroundImage和backgroundColor不能同时设置。

2.
监听加载事件,重新绘图(自行绘制进度条):集成于DownloadProcessBar,在set preloader中设置监听器

3.
重新实现IPreloaderDisplay接口:继承于Sprite,实现IpreloaderDisplay接口

Application类

是所有显示组件的根,每个UIComponent通过parentApplication指向Application类,以下属性:

pageTitle:页标题,类似于jsp的header

preloader:预加载显示类名

usePreloader:是否显示滚动条

application:指向最上层的Application,在模块中使用

url: swf文件的完整路径,读取该属性,可以获得服务器的名称和页面的参数,通过路径控制权限。

parameters:网页中参数,也可以从url获得,不过这个更方便。访问方式类似于map,如 test.swf?name=hello
通过parameters.name能获得hello

通过SWF Loader加载Application

1.
主应用MainApp

通过 swfloader获得SubApp

Var sub:SubApp=SubApp(SystemManager(loder.content).application)

sub.fun() //调用SubApp的函数

2.
子应用 SubApp

Application.application获得MainApp

Application.application[‘mainLabel’].text=”sss”

实际中,只有父引用了解子应用

跨域访问

访问相同域中的文件不需要任何额外的工作。

如果跨域,

首先配置被访问的swf的跨域策略文件crossdomain.mxml,

其次在as中设置

var lc:LoaderContext=new LoaderContext();

lc.securityDomain=SecurityDomain.currentDomain

运行期共享库RSL

当客户端有多个flex应用,如果都共享一个图片文件、组件和其他资源,用户只需下载一次,可以明显减少主应用文件的大小,如果RSL发生变化,也只需要重新下载该RSL

1.
使用系统的RSL

工程属性-》flex build path->library path->Framework linkage

2.
其他的swc包

Flash builder没找到怎么操作

3.
自定义的swc包

Flex on Java企业应用架构

选择框架

客户端和服务器端使用HttpService和WebService传递少量、数据格式不易变化的数据,大量的通信使用RemoteObject,通过AMF协议,可以直接将actionscript对象作为参数和返回结果。

使用BlazeDS的好处:

1.
支持二进制协议AMF

2.
实现as和java对象的自动转换

系统架构



服务器端:

当C和S中的数据对象不一致时,通常是在Server端再加一层接口RemoteFacade类

Client中的vo和Server中的dto对应,代表参数和返回值,在包名和类名上一致

一个模块对应一个RemoteFacade类

客户端:

Proxy:封装了客户端对Remote Façade的调用代码,作为RemoteFacade的代理,是和RemoteFacade的包名类名相匹配的。

VO:远程方法的参数和返回值

路径规划

{公司路径}/{模块路径}/{类责任}

类责任主要有 vo model view proxy events

主MXML放在Project的根路径下

大规模应用解决方案

减少SWF大小

将库文件和框架文件设为RSL,让swf在需要的时候加载

1.
在一个应用中,应该只有一个Application作为主应用,主应用以动态载入方式打开业务界面,主应用主要存储登录信息及其他全局公用信息,如消息流、权限等

2.
业务界面应该由Module类实现,以便于分工实现

3.
主和业务界面依赖的公共类库放在RSL中

4.
对于每个业务模块有三个工程Flex Project Java Flex Library Project,有利于提取公有代码和分工合作

应用开发实例

开发环境

常常将服务器端工程、客户端工程和客户端Library工程三部分分开,便于分工合作和加快编译速度。

Flex SDK包文件分为 External、Merged into code和RSL三种类型,采用原则是如果包文件Flash虚拟机已经提供,则采用External类型;如果工程没有引用包中的任何类,则采用Merged
into code;如果引用了包中的类,则使用RSL类型,包链接类型如下:

框架部分、flex-lib是RSL,如果flex unit没有使用,则为merge
into code

客户端数据过滤

从服务器获取数据后,可以在客户端对数据进行过滤,思路如下:

设置grid.filterFunction=onFilter; //参数item:Object
为该行对应数据

刷新grid.refresh();

设置过滤函数为Null grid.filterFunction=null;
不影响后续的操作

客户端定位

在返回结果中进行查找,对查找到得结果高亮显示,思路如下:

设置grid.selectedIndex
为查找到得行号

滚动到该行 grid.scrollToIndex(index)

设置为焦点 grid.setFocus()

使用户等待远程调用结束

用户希望看到进度;后续操作的前提是本次操作的结果。

实现方法:

创建组件:能同时监控多个操作或任务的进度,并能支持在操作或任务进行中锁定用户界面。当然通过程序启动、更新状态和停止进度监控的功能是必不可少的,具体实现参考代码。

设置RemoteObject busy属性为true

身份认证功能

在java的login中,FlexContext.getHttpRequest()
可以得到客户端请求的request。 FlexContext.getFlexSession()
可以得到session对象

Flex部署到应用环境

解决Flex所在工程改完工程名后flex需要重新编译。需要修改 web.xml加入FlexDispatcher.java
;创建FlexDispatcher.java; flex工程中创建RemoteObject.as;其他as文件使用该RemoteObject完成远程访问
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐