`
nmv884rp
  • 浏览: 24828 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

 
阅读更多

Flex 组成、变量、函数、命名空间
2011年04月13日
  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编码格式
  标签是所有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代码得到相同结果的代码如下所示:
  myText.text= "hello world"; 
  myText.setStyle("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);             //输出: 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文件中,用户可以使用标签直接把ActionScript代码放置在文件中,也可以包含(include) 在里面。当使用时,所有的内容都必须包含在CDATA结构中。这样保证编译将script块当作 XML来处理。因此Flex建议使用以下的结构来包含ActionScript代码。
   
   
  
  文章来自超越EBIBI - RIA在线应用中文门户,富应用正版发行平台,详细参考:http://www.ebibi.com/i/experience/2011/0407/3737.h tml 
  
  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics