微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flex 组成、变量、函数、命名空间

Adobe? Flex?是Adobe公司的多平台的RIA(Rich Internet Applications)开发产品RIA全称为“Rich Internet Application”,其意思为“富互联网应用程序”。它具有高度的用户互动性和丰富的用户体验Adobe公司的Flex是一个安装在客户端的表现层的服务器;Flex表现层服务器包含了Flex应用框架和Flex运行服务。Flex框架又包含了MXML描述语言,ActionScript程序语和Flex类库。Flex应用需要至少一个的MXML文件或ActionScript类文件来构成Flex应用的源程序。Flex Builder:Flex Builder是Adobe格式官方发布的IDE(集成开发系统),用来构建在开源的Eclipse IDE上,使用Flex的MXML和ActionScript技术,用来进行Flex书写和调试与Live Cycle Data Service(LCDS)集成:LCDS是Flex应用的重要组成部分,简单的说,其作用在于Flex应用与数据层之间的发送和获取数据多数传统技术包含了至少三层的结构:一个数据层(Data Tier),一个业务层(Business Tier),一个表现层(Presentation Tier)。数据层通常指数据库或数据源。业务层指应用核心的业务逻辑部分。Flex首先包含了一个数据层(Data Tier)和一个业务层(Business Tier),数据层和业务层中间的集成层(Integration Tier),表现层(Presentation Tier)。与传统技术不同的是,Flex还有一层客户层(Client Tier),这是与传统网页技术完全不同的一个层面。Flex的客户层允许用户可以脱离服务器的工作,不受网络的限制,并且与用户更好的互动。MXMLMXML是一种XML语言,最基本的作用是用来布局Flex应用程序的用户界面。MXML也可以用来定义不可视的Flex应用。例如,它可以定义数据源,并将数据源绑定到用户界面。MXML类似于HTML,它也提供各种标签来定义用户界面MXML标签不仅包括可视的标签,如数据表格(DataGrid)、树结构(Tree)、菜单(Menu)等;它还包括不可视的标签,如Web Service连接、数据绑定、动画效果等。用户还可以将用户自定义的组件,定义为一个MXML标签。MXML和HTML最大区别在于MXML定义的应用程序,需要被编译成SWF文件,并在Flash Player上运行。<?xml version="1.0" encoding="utf-8"?>定义XML编码格式<mx:Application>标签是所有Flex应用程序的根标签。在Flex编程中,编程者使用两种语言来进行Flex应用编程:MXML和ActionScript。一般来说,MXML实现了在MVC(Model、 View和Control)编程模式中的View(视图)部分,而ActionScript则完成Model(模式)的部分。MXML标签相当于ActionScript中的类的属性,大多数MXML标签对应于ActionScript类或类的属性。MXML文件名必须是合法的ActionScript标识符号。文件名必须以字母或者下划线(_)起始。文件名中只能包含字母、数字和下划线。文件名不能与ActionScript类的名字、组件名一样,也不能是“Appliction”。同时,不要使用文件名与MXML标签名一样。文件名必须有小写的.mxml后缀。<mx:TextArea id="myText" text="hello world" fontFamily="Tahoma"/>在ActionScript中,与上述MXML代码得到相同结果的代码如下所示:myText.text= "hello world"; myText.setStyle("fontFamily","Tahoma");有些MXML标签属性可以设定为URL的值。例如,在<mx:Script>中,可以使用source属性来定义外部的一个ActionScript文件。MXML支持下列类型的URL:绝对路径:就是文件或目录在硬盘上真正的路径。示例如下。<mx:Style source="http://www.mysite.com/mystyles.css">    动态的路径:它与Flex运行根路径有关。示例如下。<mx:HTTPService url="@ContextRoot()/directory/myfile.xml"/> 编译时的路径:它与Flex运行根路径有关。示例如下。<mx:Script source="/myscript.as"/>相对路径:就是从当前目录下找到所需文件的路径。示例如下。<mx:Script source="../myscript.as"/>下面的这组标签不直接与ActionScript对象和属性有对应关系,通称为编译标签。这些标签在MXML中均用来进行与数据有关的,不可视的设计。<mx:Binding>:绑定标签,用来进行在MXML代码中的数据绑定工作。<mx:Component>:组件标签,定义一个文件内部可视组件的实体。<mx:Metadata>:元数据标签,提供给Flex编译器关于如何使用MXML组件信息。<mx:Model>:模式标签,在MXML代码中定义数据模式。 <mx:Script>:ActionScript标签,用来嵌入ActionScript代码。 <mx:Style>:样式标签,用来嵌入样式表单。<mx:XML>:XML标签,是编译时的标签,用来从文本模式产生XML对象,或XMLNode对象。<mx:XMLList>:XMLList标签,是编译时的标签,用来从包含有效的XML节点的文本模式来产生一个XMLList对象。<mx:operation>:WebService的操作标签,用来定义WebService的操作。<mx:request>:WebService的操作标签的需求项,用来定义WebService的操作所要的需求项。<mx:method>:RemoteObject的方法标签,用来定义RemoteObject所使用的方法。<mx:arguments>:RemoteObject的方法标签的参数,用来定义RemoteObject所使用的方法的参数。MXML标签规则不是所有的标签都要求有id属性。所有的根标签都不能有id属性。布尔属性只有true和false两个值。<mx:Binding>要求有source和destination属性。<mx:Binding>标签不能有id属性。<mx:WebService>标签要求wsdl和serviceName中的其中一项,但不允许两者一起出现。<mx:RemoteObject>标签要求source和name中的其中一项,但不允许两者一起出现。<mx:HTTPService>标签要求url和serviceName中的其中一项,但不允许两者一起出现。<mx:operation>标签要求name值,但不允许重复name的值。<mx:operation>标签不能有id属性。<mx:method>标签要求name值,但不允许重复name的值。<mx:method>标签不能有id属性。Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作ActionScript是对大小写敏感的语言。定义一个变量时必须使用var关键词,示例如下:var index;                     //定义一个变量。 没有定义变量类型在ActionScript中是合法的,但会给出一个警告信息。定义一个整数类型的变量代码如下所示。var index:int;                 //定义一个整数类型变量。一个全局(global)变量是在任何函数之外声明的变量,它在整个代码中都可以引用和修改。与之相对的是局部(local)变量,它是在函数内部被定义,只在这一部分代码中可以被引用和修改的变量。在ActionScript中,变量的作用范围就是在其中定义此变量的函数或类。全局变量则是在函数和类之外定义的变量。ActionScrpt使用const声明,用来建立常量。常量只能被赋值一次。常量的必须在声明的范围内被赋值var numArray:Array = ["zero","one","two"];         //定义一个数组。数据类型检查可以在编译时间或运行时间进行。静态语言,如C++或Java是在编译时间进行检查;动态语言,如Python是在运行时间进行检查。 ActionScript做为一种动态的语言,也是在运行时间进行检查,但它也支持在编译时间进行检查。当定义编译器的模式为严格模式(strict mode)时,支持在编译和运行时的类型检查。在普通模式下,支持运行时的类型检查。is操作符是ActionScript新的操作符,用来测试变量或表达式数据类型。下述的示例建立一个Sprite类的实例,命名为mySprite。代码首先使用is来检查mySprite是否为Sprite和displayObject类的一个实例,然后检查它是否为IEventdispatcher interface的一个成员。var mySprite:Sprite = new Sprite(); trace (mySprite is Sprite);             //输出: truetrace (mySprite is displayObject);         //输出: true trace (mySprite is IEventdispatcher);     //输出: trueas操作符是ActionScript新的操作符,用来测试表达式是否是给定的数据类型的成员。与is操作符不同的是,as操作符不返回布尔值,而是返回表达式的值。下述的示例使用as操作符代替is操作符,以测试Sprite实例是否是一个displayObject和IEventdispather数据类型的成员。var mySprite:Sprite = new Sprite(); trace (mySprite as Sprite);             //输出: 〔object Sprite〕trace (mySprite as displayObject);         //输出: 〔object Sprite〕trace (mySprite as IEventdispatcher);     //输出: 〔object Sprite〕类型转换是指将数据从一个数据类型转换为其他数据类型。类型转换可以是隐含的(implicit)和不隐含的(explicit)。隐含的转换也称为强制的(coercion),在运行时使用。例如,如果给一个布尔类型的变量赋值为“2”,编译器则转换布尔数值为true。不隐含的转换也称为转型(casting),在编译时改变变量类型所使用。语法如下代码所示。var myBoolean:Boolean = true;var myINT:int = int(myBoolean); trace(myINT);                                 //输出: 1如果一个函数一个类的一部分,或者是依附于一个对象实例,被称为方法。其他的方式称为函数closure使用return声明在函数中返回数值,return后面可以跟随一个值或者一个表达式。下面的示例显示函数返回一个表达式所产生的值,代码如下所示。function doubleNum(baseNum:int):int {return (baseNum * 2);}包和命名空间是相关的概念,包允许编程者将类打包到一起,帮助实现代码分享和减小命名的冲突,同时帮助管理类文件。命名空间允许编程者控制每个对象的可视性。在ActionScript中,包是由命名空间来实现的,但它们不是同义词。当定义一个包时,就要建立一个特定类型的命名空间,保证在编译时能被识别。当命名空间直接建立时,不需要在编译时被识别。ActionScript提供了非常灵活的方法来组织包,类和源文件。ActionScript允许建立多个类在一个文件中,但每个文件中只有一个类可以在包中被声明。在包中的类的名称必须和文件名一致。在ActionScript中使用package语句来声明包。其语法示例如下所示:package 文件包名 { public class 类名 {}}如果需要使用包中的一个类,就必须要输入包或者特定的类。示例代码如下所示。import samples.*;  //输入samples类如果只需要使用包中的一个类,建议使用下面的用法。因为输入整个包可能会引起文件名冲突。import samples.SampleCode;命名空间用来控制编程者建立的属性方法的可视性。使用ActionScript命名空间有以下三个基本的步骤。(1)使用namespace关键词来定义命名空间,代码如下所示。namespace vsersion1; (2)在定义属性方法时使用命名空间,代码如下所示。version1 function myFunction () {};(3)当使用了命名空间,就可以使用use来引用命名空间,代码如下所示。use namespace version1; myFunction();使用MXML文件中,用户可以使用<mx:Script>标签直接把ActionScript代码放置在文件中,也可以包含(include)在里面。当使用<mx:Script>时,所有的内容都必须包含在CDATA结构中。这样保证编译将script块当作 XML来处理。因此Flex建议使用以下的结构来包含ActionScript代码。<mx:Script> <![CDATA[ ... ]]> </mx:Script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐