您的位置: 首页 > 技术文档 > 网络编程 > Macromedia Flex 标记语言简介
面向对象编程,我的思想 回到列表 ASP应用之模板采用
 Macromedia Flex 标记语言简介

作者:Christophe Coenraets 时间: 2004-09-04 文档类型:转载 来自:samhoo's blog

第 1 页 Macromedia Flex 标记语言简介[1]
第 2 页 Macromedia Flex 标记语言简介[2]

Christophe Coenraets
Macromedia Flex 专员 Christophe

[原作]http://www.macromedia.com/devnet/flex/articles/paradigm.html
[翻译]samhoosamhoophone@yahoo.com
[注]转载请保持全文完整


Macromedia Flex(开发代号为Royale)是一个展现服务器,开发者可以用它来开发新一代的“复杂Internet应用”(RIAs - Rich Internet Applications)。复杂Internet应用融合了桌面应用的可用性和web应用的易于管理的优点。

Flex是一个在J2EE应用服务器或servlet容器安装的展现服务器。它拥有丰富的用户界面组件、用于排布这些组件的基于XML的标记语言,以及可以处理用户交互的面向对象编程语言。这些技术的给我们带来的是:使用Flash播放器渲染复杂Internet应用,使用工业标准和开发者熟悉的方式进行开发。

本文将专注于Flex语言的关键部分。

为了运行本文中提到的代码,你可能需要加入Flex的Beta测试。Flex运行于象Macromedia JRun, IBM Websphere, BEA WebLogic, or Apache Tomcat 这样的J2EE应用服务器之上。Flex未来将支持Microsoft .NET服务器。


Flex 语言简介

由于标记语言和面向对象程序设计语言广泛应用,因此,基于这两项技术的Flex语言也将从中获益。标记语言是成功的,排布用户界面也相对容易。MXML,由Flex引入的、基于XML的标记语言,将延续其成功。和HTML很象,你可以用MXML来排布应用的用户界面。同为基于XML的标记语言,MXML比HTML有更强的结构,更少的语法歧义。比起HTML,MXML还引入了更丰富的标签集。如:DataGrid,Tree,TabNavigator,Accordion和Menu,这些都是标准标签集中的一部分。你还可以扩展MXML标签,创建自己的组件。此外,二者最大的区别是,MXML定义的用户界面是用Flash播放器运行的,相对传统的基于HTML、页面为中心的web应用而言,这将更具吸引力。

除了排布可视组件,还可以用MXML来定义应用中其他重要方面,如,可以把应用定义为一个web服务的客户,或是在应用中开发动画,用于提示用户进度。

但是,标记语言提供的编程逻辑仍难以满足用户交互的需求。在Flex中,可以用ActionScript编程语言来编写事件监听器来满足此种需求。ActionScript是一种基于ECMA-262标准的、强类型的面向对象语言,和其他编程语言——java和C#很相似,因此也很易于上手。

总而言之,当编写一个Flex的应用时,需要用MXML来设置用户界面,并用ActionScript来编写响应用户交互的逻辑。

作为一个开发者,你可以根据自己的喜好,用自己所熟悉的IDE(比如Eclipes或Intellij)手工编写MXML,也可以使用Flex支持的“所见即所得”开发环境(目前开发代号为Brady)。即使你选择手工编写MXML,仍可使用Flex提供的XML schema,在IDE中为你提供代码提示(code hinting)和代码自动填充(code completion)的功能.

下面例子是一个名为HelloWord.mxml的简单Flex应用的源代码。该应用程序有两个TextInput组件,当点击Copy时,source TextInput的内容就会显示在destination TextInput域中。以下例子显示如何用MXML和ActionScript来创建应用:用MXML定义用户界面,再用ActionScript为Button组件的事件监听器编写拷贝逻辑。

<?xml version="1.0" encoding="iso-8859-1"?>
 
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
 
<mx:TextInput id="source" width="100"/>
<mx:Button label="Copy" click="destination.text=source.text"/>
<mx:TextInput id="destination" width="100"/>
 
</mx:Application>


图1.在HelloWorld程序中将source TextInput的文本拷贝到destination TextInput。


Flex开发与部署模型

要开发并部署这个应用,一般要经过以下步骤:
1. 用你熟悉的IDE或Flex的“所见即所得”开发工具编写HelloWold.mxml文件。
2. 把该文件部署到应用服务器上。一般可以通过拷贝HelloWorld.mxml到某个web应用的目录下,或将HelloWorld.mxml作为应用的一部分打包到WAR文件中去。

当一个用户首次请求HelloWorld.mxml的时候,服务器会将MXML代码编译为Flash字节码(一个SWF文件)。然后服务器将产生的SWF文件发往客户端,让Flash播放器执行。对同一个MXML文档的并发请求,服务器将跳过编译过程,直接返回相同的编译结果。

如果你对JavaServer Pages比较熟悉,就会发现它们的模型非常相似。就像JSPs被编译为Java字节码(servlets)一样,MXML文件将被编译为Flash字节码。二者的主要不同在于:在Flex中,产生的字节码是在客户端执行的,而由JSP产生的Java字节码(servlet)是在服务器端执行的。通过Flex,你可以将复杂客户端应用无缝的集成到已有的商业逻辑中。

使用MXML用户界面组件

拥有丰富的用户组件是Flex的一大特色。除了传统的数据输入控件(Text InputTextArea,CheckBox,RadioButton,ComboBox等等),MXML还包括了一些高级组件,用于维护结构化数据(Tree 组件)和大数据集(DataGrid 组件)。为了清晰的组织数据及其处理过程,Flex还提供了导航组件(Tab,ViewStack,Accordion等等)。

为了更易于组织用户界面,Flex容器还定义了布局管理策略,用于指明一个组件相对与另一个组件的位置。Flex组件库提供了大量的、可实现不同布局策略的容器。比如,在HBox中的组件将被水平排列,而在VBox中的组件会被垂直排列,而在Grid中组件将以行列的方式进行排列,就象HTML的table一样。View容器中没有定义任何布局管理策略,因此你可以用x,y坐标来指定组件的位置。

下面给出一个在Flex环境下、具有三个面板的传统e-mail界面。HBox容器中的Tree是水平排列的,而VBox容器中的DataGrid和TextArea则是垂直排列的。

<?xml version="1.0" encoding="iso-8859-1"?>
 
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
 
<mx:HBox>
<mx:Tree/>
<mx:VBox>
<mx:DataGrid/>
<mx:TextArea/>
</mx:VBox>
</mx:HBox>
 
</mx:Application>

图2. 一个用Flex创建的e-mail应用。


编写ActionScript代码

Flex语言是事件驱动的。MXML将事件作为标签的属性,你可以为它编写事件监听器。比如,Button组件有一个click属性,ComboBox,List和Tree组件有一个change属性,等等。

对于简单的交互,可以在标签的事件属性上直接编写ActionScript语句。例如,在HelloWorld应用中,存在Button的click事件监听器中的ActionScripts语句,能把source TextInput 的内容拷贝到destination TextInput中。

<?xml version="1.0" encoding="iso-8859-1"?>
 
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
 
<mx:TextInput id="source" width="100"/>
<mx:Button label="Copy" click="destination.text=source.text"/>
<mx:TextInput id="destination" width="100"/>
 
</mx:Application>

当逻辑更为复杂的时候,可以定义独立的ActionScript函数,然后在组件的事件监听器中调用。例如,你可以象下面一样,重写HelloWorld应用:

<?xml version="1.0" encoding="iso-8859-1"?>
 
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
 
<mx:script>
 
function copy() {
destination.text=source.text
}
 
</mx:script>
 
 
<mx:TextInput id="source" width="100"/>
<mx:Button label="Copy" click="copy()"/>
<mx:TextInput id="destination" width="100"/>
 
</mx:Application>

创建一个MXML文件,实际上是创建了一个类。定义在<mx:script>标签中的ActionScript函数是该类的方法。你可以在MXML文件或独立的文件中定义ActionScript函数。选择哪种方法,取决你所在的组织,后一种方法可以对开发团队进行更好的分工。

定义自己的组件

在Flex中,你可以从头开始,或通过扩展Flex组件库中已有的组件,来创建自己的组件。创建组件就象创建一个应用一样:用MXML排布用户界面,用ActionScript编写用界面逻辑。

下面的一个例子是,通过扩展VBox类来创建简单的信用卡选择组件。

<?xml version="1.0" encoding="iso-8859-1"?>
 
<mx:VBox xmlns:mx="http://www.macromedia.com/2003/mxml">
 
<mx:RadioButton groupName="card" id="americanExpress"
label="American Express" selected="true"/>
<mx:RadioButton groupName="card" id="masterCard" label="MasterCard"/>
<mx:RadioButton groupName="card" id="visa" label="Visa"/>
 
</mx:VBox>

组件的名字就是源文件的名字。如,源文件的名字是CreditCardChooser.mxml,组件的名字就是CreditCardChooser,这样,这个标签名就可以用了。下面的例子就用上了刚才创建的CreditCardChoose组件。

<?xml version="1.0" encoding="iso-8859-1"?>
 
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
 
<mx:Label text="Select a credit card:"/>
<CreditCardChooser/>
 
</mx:Application>


 

图3. CreditCardChooser应用

界面开发者还能在Macromedia Flash开发环境中创建复杂的可视化组件,并存为SWC文件。

当然,也可以只用ActionScript定义来整个组件,这种方法一般用于定义应用中的非可视组件。你可能会为这样商业对象创建非可视组件——例如,包含客户端逻辑的购物车,或是应用中helper类。

 


 

 

出处:samhoo's blog
责任编辑:一个好孩子

上一页 下一页 Macromedia Flex 标记语言简介[2]

◎进入论坛网络编程版块参加讨论

相关文章
Macromedia Flex 1.5 提供下载
Macromedia Flex Builder 发布
Flex 入门教程
Macromedia Flex 安装注册方法
作者文章
Macromedia Flex 标记语言简介
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:1/21个记录/页 转到 页 共2个记录 分享按钮

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2