2023年6月21日发(作者:)

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编码格式标签是所有Flex应⽤程序的根标签。在Flex编程中,编程者使⽤两种语⾔来进⾏Flex应⽤编程:MXML和ActionScript。⼀般来说,MXML实现了在MVC(Model、 View和Control)编程模式中的View(视图)部分,⽽ActionScript则完成Model(模式)的部分。MXML标签相当于ActionScript中的类的属性,⼤多数MXML标签对应于ActionScript类或类的属性。MXML⽂件名必须是合法的ActionScript标识符号。⽂件名必须以字母或者下划线(_)起始。⽂件名中只能包含字母、数字和下划线。⽂件名不能与ActionScript类的名字、组件名⼀样,也不能是“Appliction”。同时,不要使⽤⽂件名与MXML标签名⼀样。⽂件名必须有⼩写的.mxml后缀。在ActionScript中,与上述MXML代码得到相同结果的代码如下所⽰:= "hello world";

le("fontFamily", "Tahoma");有些MXML标签的属性可以设定为URL的值。例如,在中,可以使⽤source属性来定义外部的⼀个ActionScript⽂件。MXML⽀持下列类型的URL:绝对路径:就是⽂件或⽬录在硬盘上真正的路径。⽰例如下。

动态的路径:它与Flex运⾏根路径有关。⽰例如下。

编译时的路径:它与Flex运⾏根路径有关。⽰例如下。相对路径:就是从当前⽬录下找到所需⽂件的路径。⽰例如下。下⾯的这组标签不直接与ActionScript对象和属性有对应关系,通称为编译标签。这些标签在MXML中均⽤来进⾏与数据有关的,不可视的设计。:绑定标签,⽤来进⾏在MXML代码中的数据绑定⼯作。:组件标签,定义⼀个⽂件内部可视组件的实体。:元数据标签,提供给Flex编译器关于如何使⽤MXML组件信息。:模式标签,在MXML代码中定义数据模式。

:ActionScript标签,⽤来嵌⼊ActionScript代码。

:样式标签,⽤来嵌⼊样式表单。:XML标签,是编译时的标签,⽤来从⽂本模式产⽣XML对象,或XMLNode对象。:XMLList标签,是编译时的标签,⽤来从包含有效的XML节点的⽂本模式来产⽣⼀个XMLList对象。:WebService的操作标签,⽤来定义WebService的操作。:WebService的操作标签的需求项,⽤来定义WebService的操作所要的需求项。:RemoteObject的⽅法标签,⽤来定义RemoteObject所使⽤的⽅法。:RemoteObject的⽅法标签的参数,⽤来定义RemoteObject所使⽤的⽅法的参数。MXML标签规则不是所有的标签都要求有id属性。所有的根标签都不能有id属性。布尔属性只有true和false两个值。要求有source和destination属性。标签不能有id属性。标签要求wsdl和serviceName中的其中⼀项,但不允许两者⼀起出现。标签要求source和name中的其中⼀项,但不允许两者⼀起出现。标签要求url和serviceName中的其中⼀项,但不允许两者⼀起出现。标签要求name值,但不允许重复name的值。标签不能有id属性。标签要求name值,但不允许重复name的值。标签不能有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 Code;命名空间⽤来控制编程者建⽴的属性和⽅法的可视性。使⽤ActionScript命名空间有以下三个基本的步骤。(1)使⽤namespace关键词来定义命名空间,代码如下所⽰。namespace vsersion1;

(2)在定义属性和⽅法时使⽤命名空间,代码如下所⽰。version1 function myFunction () {};(3)当使⽤了命名空间,就可以使⽤use来引⽤命名空间,代码如下所⽰。use namespace version1;

myFunction();使⽤MXML⽂件中,⽤户可以使⽤标签直接把ActionScript代码放置在⽂件中,也可以包含(include)在⾥⾯。当使⽤时,所有的内容都必须包含在CDATA结构中。这样保证编译将script块当作 XML来处理。因此Flex建议使⽤以下的结构来包含ActionScript代码。

...

]]>

2023年6月21日发(作者:)

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编码格式标签是所有Flex应⽤程序的根标签。在Flex编程中,编程者使⽤两种语⾔来进⾏Flex应⽤编程:MXML和ActionScript。⼀般来说,MXML实现了在MVC(Model、 View和Control)编程模式中的View(视图)部分,⽽ActionScript则完成Model(模式)的部分。MXML标签相当于ActionScript中的类的属性,⼤多数MXML标签对应于ActionScript类或类的属性。MXML⽂件名必须是合法的ActionScript标识符号。⽂件名必须以字母或者下划线(_)起始。⽂件名中只能包含字母、数字和下划线。⽂件名不能与ActionScript类的名字、组件名⼀样,也不能是“Appliction”。同时,不要使⽤⽂件名与MXML标签名⼀样。⽂件名必须有⼩写的.mxml后缀。在ActionScript中,与上述MXML代码得到相同结果的代码如下所⽰:= "hello world";

le("fontFamily", "Tahoma");有些MXML标签的属性可以设定为URL的值。例如,在中,可以使⽤source属性来定义外部的⼀个ActionScript⽂件。MXML⽀持下列类型的URL:绝对路径:就是⽂件或⽬录在硬盘上真正的路径。⽰例如下。

动态的路径:它与Flex运⾏根路径有关。⽰例如下。

编译时的路径:它与Flex运⾏根路径有关。⽰例如下。相对路径:就是从当前⽬录下找到所需⽂件的路径。⽰例如下。下⾯的这组标签不直接与ActionScript对象和属性有对应关系,通称为编译标签。这些标签在MXML中均⽤来进⾏与数据有关的,不可视的设计。:绑定标签,⽤来进⾏在MXML代码中的数据绑定⼯作。:组件标签,定义⼀个⽂件内部可视组件的实体。:元数据标签,提供给Flex编译器关于如何使⽤MXML组件信息。:模式标签,在MXML代码中定义数据模式。

:ActionScript标签,⽤来嵌⼊ActionScript代码。

:样式标签,⽤来嵌⼊样式表单。:XML标签,是编译时的标签,⽤来从⽂本模式产⽣XML对象,或XMLNode对象。:XMLList标签,是编译时的标签,⽤来从包含有效的XML节点的⽂本模式来产⽣⼀个XMLList对象。:WebService的操作标签,⽤来定义WebService的操作。:WebService的操作标签的需求项,⽤来定义WebService的操作所要的需求项。:RemoteObject的⽅法标签,⽤来定义RemoteObject所使⽤的⽅法。:RemoteObject的⽅法标签的参数,⽤来定义RemoteObject所使⽤的⽅法的参数。MXML标签规则不是所有的标签都要求有id属性。所有的根标签都不能有id属性。布尔属性只有true和false两个值。要求有source和destination属性。标签不能有id属性。标签要求wsdl和serviceName中的其中⼀项,但不允许两者⼀起出现。标签要求source和name中的其中⼀项,但不允许两者⼀起出现。标签要求url和serviceName中的其中⼀项,但不允许两者⼀起出现。标签要求name值,但不允许重复name的值。标签不能有id属性。标签要求name值,但不允许重复name的值。标签不能有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 Code;命名空间⽤来控制编程者建⽴的属性和⽅法的可视性。使⽤ActionScript命名空间有以下三个基本的步骤。(1)使⽤namespace关键词来定义命名空间,代码如下所⽰。namespace vsersion1;

(2)在定义属性和⽅法时使⽤命名空间,代码如下所⽰。version1 function myFunction () {};(3)当使⽤了命名空间,就可以使⽤use来引⽤命名空间,代码如下所⽰。use namespace version1;

myFunction();使⽤MXML⽂件中,⽤户可以使⽤标签直接把ActionScript代码放置在⽂件中,也可以包含(include)在⾥⾯。当使⽤时,所有的内容都必须包含在CDATA结构中。这样保证编译将script块当作 XML来处理。因此Flex建议使⽤以下的结构来包含ActionScript代码。

...

]]>