`
zbu57zbu
  • 浏览: 28132 次
社区版块
存档分类
最新评论

Flex Builder2的基本知识[转]

 
阅读更多

Flex Builder2的基本知识[转]
2010年10月04日
  2.1 MXML/ActionScript 说明
  MXML从本质上说一种XML规范的标签语言,主要用来定义描述可视用户接口,如控件类DataGrid,Label,Button,Hslider等,但是也有时用来定义一些非可视的对象比如FDS数据源的封装和绑定,比如WebService连接,数据绑定Binding,还有一些效果类Effects.MXML基本上和HTML的语法很相象,都是利用标签来定义用户接口和基本组件,但是MXML有比HTML更庞大的标签库。HTML和MXML最明显的不同是MXML文件最终由FlashPlayer来编译解析和展示,而HTML是由IE来直接解析和展示。当我们学习任何一种语言是,第一个程序都是hell world。我们也不能免俗。
  
  
  
  
  
  
  
  首先Flex MXML文件的注释方式为。一般一个MXML应用文件的根标签都是,而xmlns:mx="http://www.adobe.com/2006/mxml" 则定义了Flex类库组件的名字空间,由此说开去,如果我们有自定义的类库或者是第三方类库时,这个地方名字空间的声明是必须的。是一个容器类对象, 是一个控件类对象。MXML机制规定容器类对象内可以无限内嵌容器类对象或者控件类对象,而控件类对象不能嵌套容器类对象或别的控件类对象。同时无论容器类对象或者控件类对象都有各自所属的属性集合,方法集合,时间集合。TextInput中text就是其中的一个属性。
  ActionScript3是被用来展示Flex2类对象的基础方式。因为所有的MXML标签对象都最终会被编译成AS类对象字节码的。FlashPlayer中的AVM(AS虚拟机)内置了as的所有基础标准类和方法,在运行时,AVM执行展示这些文件字节码。外表上AcitionScript和JavaScript是很相似的。实际上,JavaScript是基于ECMA-262标准的,而ActionScript是基于ECMA-262 Edition4规范的。和JavaScript一样,ActionScript也是一种弱类型的语言。在OO编程模式的实现上,ActionScript还远远不能让人满意,开发者可以把AS写成OO的样子,但是OO核心思想中的封装多态和继承却徒有其表。况且也没有足够的运行时Runtime处理高端需求的弹性,比如Java中的反射机制。作者认为,ActionScript3在OO的实现上还有空间可以拓展。
  但从脚本语言的观点出发,ActionScript中我们的确可以方便的做很多东西。比如可以写组件事件侦听逻辑,创建新的类对象,处理回调函数,定义包package和组件等。在Flex2应用程序中利用ActionScript脚本的方法和场合有以下几种。
  1.在 MXML文件的标签中插入as代码,这里可以写事件处理函数,自定义事件,错误处理函数,以及任何你想写的as逻辑。
  2. 在ActionScript文件定义组件类。另外考虑到组件重用,可以将此AS组件编译成swc库文件备用。
  3. 在ActionScript文件中扩展标准组件。
  4. 可以把所有的MXML文件标签中的逻辑放到一个或者若干个AS文件中,用时可以import到MXML文件中。
  上面提到在MXML文件中直接插入AS代码的方法时要用用到标签,具体语法是
  
  
  
  在这个标签里,需要注意的地方有几点。
  1.    标签要成对出现。
  2.    你不能在标签内定义任何的的类或者接口,因为本身当前的MXML文件就是一个类,ActionScript并没有像Java一样支持内部类定义。
  3.    [CDATA[标签主要用来告诉编译器标签内的内容不要被解释成MXML语法,而是ActionScript.
  4.    标签必须定义在MXML文件根标签的层次否则会出现编译期错误。另外Flex2语法上支持一个MXML文件中定义多个标签。
  下面举一个在MXML文件中使用AS标签的例子。
  
  
  
  Flex2";
  textInput.text = temp;
  }
  ]]>
  
  
  
  在MXML文件中标签对象都是用id属性来标识的,一个标签对象只能有一个唯一的id.另外
  需要说明的是只有类的对象才可能有id,这个id就是当前类对象的名字。比如,我们上面定义的TextInput就可以有id属性,但是当我们用mxml语法自定义一个组件类时,组件类根标签是不能设置id属性的,否则会出现编译错误。原因很好理解,因为这个组件MXML文件只是一个类定义,不是一个类对象。只有对象才可能有id,不是吗?有了id我们就可以像MXML文件内全局变量一样任意控制当前类对象的所有属性和事件处理。就像
  textInput.text = temp;
  当你想索引另外的自定义类文件或者标准库文件时有可能会用到import或者include。如你想在as标签内索引Button标准组件可以用这个语法/import mx.controls.Button。另外如果你想用你自定义的一个AS文件中的一个函数,你可以这样写
  
  
  
  2.2 Flex2项目源文件的编译过程
  首先说明一下,一个完整的Flex应用可以包括MXML文件,ActionScript文件,SWF文件,和SWC文件等。Flex编译器工作的第一个步骤是将主MXML文件以及文件内include的所有子文件转换成一个单独的ActionScript类文件。连接所有被索引(imported)的的库或自定义类文件。最后形成一个可以被部署到服务器上的swf文件。
  2.3 Flex2 类库架构
  Flex2类库主要包括可视化组件类,行为类以及系统管理类。整个类库结构非常复杂。不过在我们的开发中主要用到的类包有,
  1.mx.utils包,很多有用的工具类在这里定义。
  2.mx.collections包,Flex2的数据容器类 3.mx.charts包,各种图形组件包
  4.mx.controls包,所有的可视组件类都在这里;
  5.flash.events包,flex 事件处理类定义。
  6.flash.utils包,flash基础工具类定义,做一些底层控制时经常用到。
  2.4 ActionScript自定义组件
  本小结我们将简要地介绍自定义组件的相关基础概念,在哪里创建以及怎么创建的问题。在实际的项目中我们经常需要自己定义一些组件。那么自定义组件的好处主要有两个。首先,自定义组件可以很好的隔离和封装我们通用的表现层逻辑;第二,它可以使我们建立起针对应用的组件库,使我们以后方便的重用这些组件。
  自定义一个组件可以有两种表示形式,一种是利用MXML标准库标签定义组件的形式,另一种在ActionScript中定义组件类。我们都知道任何Flex组件不论是标签形式还是AS形式都最终被FlashPlayer解释成类对象。组件类定义完成后,那么我们到底该怎么以类文件为模板new一个组件对象呢?首先可以说清楚的是,我们基本上有以下4种方式初始化一个组件对象。
  1.     在MXML标签外,创建MXML类对象。
  2.     在MXML标签外,创建AS类对象。
  3.     在MXML标签中,创建AS类对象。
  4.     在MXML标签中,创建MXML类对象。
  举例分析如下
  比如我们继承mx.containers.Panell基础类创建一个CustomPanel自定义组件,类文件定义有两种方式分别为CustomPanelAS.as和CustomPanelMXML.mxml
  CustomPanelAS.as的代码为:
  package demo.flexinaction.samples
  {
  import mx.containers.Panel;
  public class CustomPanelAS extends Panel
  {
  public function CustomPanelAS(){
  super();
  }
  }
  }
  Package关键字表明了当前类所在的目录位置,这样做主要为在别的mxml或as文件中名字空间的定义提供索引。和Java的类定义很相像,要倒入类定义中需要索引的类文件 mx.containers.Panel。你不能把一个类声明成私有的,private关键字只有被用来定义类私有属性以及私有方法extends关键字说明当前类需要继承的父类。与类同名的方法CustomPanelAS()是当前类的构造器。Flex2不支持构造器的重载。super();说明调用父类的构造器。
  CustomPanelMXML.mxml文件代码如下:
  
  
  
  声明了当前mxml文件的schema以及按照utf-8标准编码。xmlns:mx=http://www.adobe.com/2006/mxml声明了Flex2标准类库的名字空间,这样我们才能在标签中利用mx前缀引用标准类库。当然也可以定义为别的名字。或者为空就像xmlns=http://www.adobe.com/2006/mxml,如果这样,那么在引用标准类库的时候就要这样。
  
  类文件定义完了,我们看看Flex2中是怎么创建这个对象的。主应用文件是AdobeFlexInAction.mxml,源代码为:
  
  
  
  
  
  
  
  
  
  
  
      xmlns:panels="demo.flexinaction.samples.*"是我们自定义文件的名字空间,前缀为panels,名字空间的引入主要是为了避免大型应用的类文件名字冲突,利用名字空间,可以
分享到:
评论

相关推荐

    Flex 3 宝典 配套 源代码

    全书分为4部分,内容包括Flex的基础知识以及Flex Builder 3的使用方法;Flex类库包含的组件(容器和控件)、管理类、数据服务类以及其他特性的类;处理数据的各种控件和数据输入表单,以及Flex应用程序与应用程序...

    使用 Flex 和 Flash Builder 开发手机应用程序

    手机外观设计的基础知识 为手机应用程序创建外观 应用自定义手机外观 第 7 章: 运行和调试手机应用程序 管理启动配置 在桌面上运行和调试手机应用程序 在设备上运行和调试手机应用程序 第 8 章: 打包并导出手机...

    FlashBuilder 4 快速入门

    本书1-2章主要为新接触FLEX开发的朋友提供入门帮助,以图文并茂的方式从零基础开始指引新手 走进FLEX开发,如果是有一定基础的FLEX开发者,这两章可以简单翻阅。3-5章开始进阶学习, 介绍 FB4 / FLEX SDK 4 新特性与...

    跟我StepByStep学FLEX教程

    跟我StepByStep学FLEX教程,里面有手把手教你搭建flex+java开发环境,flex builder安装。。等基础知识

    flex4 最全的 学习文档

    Flash Builder 工作台基本知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....

    Flash Builder 4 快速入门 (包含源码)

    本书1-2章主要为新接触FLEX开发的朋友提供入门帮助,以图文并茂的方式从零基础开始指引新手走进FLEX开发, 如果是有一定基础的FLEX开发者,这两章可以简单翻阅。3-5章开始进阶学习, 介绍FB4 / FLEX SDK 4 新特性与...

    Flex企业应用开发实战源代码

    本书对Flex的基础知识着墨不多,所有内容都围绕Flex+Java这一企业级应用开发技术展开,侧重于对Flex技术原理、企业级应用的架构思想和实现方法的讲解,所以书中的内容不会随着Flex版本的升级而过时。 第1章 Flex...

    《Flash Builder 4 快速入门》内容简介全部案例源码包

    《Flash Builder 4 快速入门》除了适合想学习FLEX开发和正在学习FLEX开发的朋友,也广泛适用与FLASH、Actionscript开发者进行转型和深入学习。包括.NET、JAVA开发人员在内,这本书都将为你日后的含RIA开发工作奠定...

    {资料}《Flash Builder4快速入门》(airia)

    《Flash Builder 4 快速入门》除了适合想学习FLEX开发和正在学习FLEX开发的朋友,也广泛适用与FLASH、Actionscript开发者进行转型和深入学习。包括.NET、JAVA开发人员在内,这本书都将为你日后的含RIA开发工作奠定...

    flex android 移动开发

    flex android 移动开发 flex4.5手机应用开发.pdf 讲述的很详细,值得一看。 第 1 章: 入门 手机应用程序入门 手机、桌面和浏览器应用...手机外观设计的基础知识 为手机应用程序创建外观 应用自定义手机外观 ..........

    flash builder [4] 中文快速入门

    本书1-2章主要为新接触FLEX开发的朋友提供了入门帮助,以图文并茂的方式从零基础开始指引新手走进FLEX开发,主要是有一定接触的FLEX开发者,这两张可以简单翻阅。 3-5章开始进阶学习,介绍FB4/FLEX SDK4新特性与开发...

    flash build 4.5 (flex4.5) 开发中文文档(flex4.5_help 中文翻译版)

    ADOBE FLASH BUILDER 4.5 使用手册,中文版,介绍flash 4。5的基础开发知识,共11章,224页

    Flex_4:开发RIA_应用程序.pdf

    了解Flex 4 基础知识 了解Adobe Flex 命名空间 ............................................................................................................................. 32 了解命名空间如何转换为...

    《ActionScript 3.0 语言和组件参考》中文官方版本,无错

    ActionScript 3.0 提供了可靠的编程模型,具备面向对象编程的基本知识的开发人员对此模 型会感到似曾相识。ActionScript 3.0 中的一些主要功能包括: ■ 一个新增的 ActionScript 虚拟机,称为 AVM2,它使用全新的...

    asp.net知识库

    事务隔离性的一些基础知识 在组件之间实现事务和异步提交事务(NET2.0) 其它 在.NET访问MySql数据库时的几点经验! 自动代码生成器 关于能自定义格式的、支持多语言的、支持多数据库的代码生成器的想法 发布Oracle...

    ActionScript开发人员指南中文版

    字符串基础知识 创建字符串 length属性 处理字符串中的字符 比较字符串 获取其他对象的字符串表示形式 连接字符串 在字符串中查找子字符串和模式 转换字符串的大小写 字符串示例:ASCII图表 第章:使用数组 数组基础...

    actionscript3.0编程

    ActionScript 3.0 提供了可靠的编程模型,具备面向对象编程的基本知识的开发人员对此模 型会感到似曾相识。ActionScript 3.0 中的一些主要功能包括: ■ 一个新增的 ActionScript 虚拟机,称为 AVM2,它使用全新的...

Global site tag (gtag.js) - Google Analytics