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的客户层允许用户可以脱离服务器的工作,不受网络的限制,并且与用户更好的互动。
MXML
MXML是一种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);             //输出: true
trace (mySprite is DisplayObject);         //输出: true
trace (mySprite is IEventDispatcher);     //输出: true

as操作符是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>

你可能感兴趣的:(Flex 组成、变量、函数、命名空间)