为什么mxml功能没有as3强大,却依然受用?
2011-05-04 10:52
316 查看
MXML是一种陈述性的、基于XML的语言。在Flex应用程序中,你可以使用MXML语言快速地创建应用程序的结构/外观。在Flex中,你使用MXML能够创建的应用程序,也可以使用ActionScript 3来创建。然而,反向操作不能成立。
如果你能够使用ActionScript 3来创建可以使用MXML完成的应用程序,那么为什么MXML会首先出现?通常学习和理解利用XML语言描述的用户界面比利用命令式语言描述的用户界面要简单得多。这样利用XML语言编写的用户界面将会具有较少的代码。另外,为陈述性语言建立工具比为命令式语言也简单得多。下面是利用MXML实现的一个范例“Hello world!”。
在这段代码中,我使用了一个名称为Label的Flex组件在屏幕上显示若干文本字符。我将文本的属性设置为我期望的文本格式。另外,我希望能够对外观及该Label在屏幕上的位置进行(少许)客户化处理。因此,我使用了属性fontSize、color、x 和 y。我相信你会同意这是非常易于理解和学习的范例。
现在,考察一下利用ActionScript 3实现的相同范例:
我使用了7行代码来实现前面我仅用包含一个标记和若干属性的MXML实现的范例!现在,可以设想一下在一个真正的应用程序中,你采用大量的控件,并且在不同的容器中进行分组。那么,维护利用MXML编写的代码要比维护使用几百行ActionScript 3编写的代码更为简单。
如果你能够使用ActionScript 3来创建可以使用MXML完成的应用程序,那么为什么MXML会首先出现?通常学习和理解利用XML语言描述的用户界面比利用命令式语言描述的用户界面要简单得多。这样利用XML语言编写的用户界面将会具有较少的代码。另外,为陈述性语言建立工具比为命令式语言也简单得多。下面是利用MXML实现的一个范例“Hello world!”。
1: <Label text="Hello World!" fontSize="14" color="red" x="100" y="50"/>
在这段代码中,我使用了一个名称为Label的Flex组件在屏幕上显示若干文本字符。我将文本的属性设置为我期望的文本格式。另外,我希望能够对外观及该Label在屏幕上的位置进行(少许)客户化处理。因此,我使用了属性fontSize、color、x 和 y。我相信你会同意这是非常易于理解和学习的范例。
现在,考察一下利用ActionScript 3实现的相同范例:
1: var myLabel = new Label(); 2: myLabel.text = "Hello World!"; 3: myLabel.setStyle("fontSize", "14"); 4: myLabel.setStyle("color", "red"); 5: myLabel.x = 100; 6: myLabel.y = 50; 7: addChild(myLabel);
我使用了7行代码来实现前面我仅用包含一个标记和若干属性的MXML实现的范例!现在,可以设想一下在一个真正的应用程序中,你采用大量的控件,并且在不同的容器中进行分组。那么,维护利用MXML编写的代码要比维护使用几百行ActionScript 3编写的代码更为简单。
相关文章推荐
- 为什么要发布“基本上没有功能变化”的 EFIDE 0.1.2
- [No00004A]为什么你看了很多书,却依然没有洞见
- Myeclipse中编写struts.xml文件没有代码提示功能及加了DTD约束后依然无效的解决
- 为什么看了那么多hadoop干货文章,却依然没有做好hadoop环境搭建
- 为什么Redis没有实现典型的加锁功能?
- 为什么注销账号的功能都没有?
- 你知道为什么Xcode6中Swift没有智能提示和自动补全功能吗 ?
- Myeclipse中编写struts.xml文件没有代码提示功能及加了DTD约束后依然无效的解决
- 你知道为什么Xcode6中Swift没有智能提示和自己主动补全功能吗 ?
- [知乎问答]团购网站为什么普遍没有评论功能?
- 为什么你看了很多书 ,却依然没有洞见 (深度好文)
- openERP server action,最强大的功能,没有之一
- 为什么我依然是个穷人而没有成为富人(转 刘建强)
- ReSharper的功能真的很强大主要是针对代码规范和优化,园子里介绍的也不少,如果你没有安装,那我只能表示你们会相见恨晚
- 为什么OGNL表达式功能强大?
- 功能强大、使用方便的java导入excel
- 功能强大的sscanf函数
- Android Design Support Library 八个强大功能的控件
- matplotlib1.1以上版本没有pyplot模块,为什么?