Flex_4.0_RIA开发详解讲义.ppt_第1页
Flex_4.0_RIA开发详解讲义.ppt_第2页
Flex_4.0_RIA开发详解讲义.ppt_第3页
Flex_4.0_RIA开发详解讲义.ppt_第4页
Flex_4.0_RIA开发详解讲义.ppt_第5页
已阅读5页,还剩614页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章Flex概述 Flex是Adobe公司推出的一系列工具和技术 使开发人员可以开发和部署可升级的富互联网应用程序 RIAs Flex提供了一种现代的 基于标准的语言来支持公共模板设计 客户端运行环境 编程模型 开发模型和高级数据服务 富互联网应用程序 RIAs 是指像使用Web一样的简单方式来部署富客户端程序 这种程序具有比HTML更加健壮 反应更加灵敏和互动性更丰富的特点 1 1Flex简介 传统的基于HTML的应用程序部署成本低 结构简单 简单易学 很多用户和开发人员于是放弃了现代高性能计算机能带来的用户体验 转而追求数据的快速访问 从而丧失了一些重要的UI功能 RIA利用相对健壮的客户端描述引擎 RIA的另一个好处是 数据能够被缓存在客户端 从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面 Flex是Adobe公司近两年推出的重量级产品与技术 Flex的出现就是为了高效地开发和部署富互联网应用程序 1 1Flex简介 Adobe公司对于Flex采取了开源的策略 所以开发者可以在Flex原代码的基础上修改 新版Flex4中的开发环境已经更名为FlashBuilder 而不再是FlexBuilder系列 Flex采用事件驱动机制 程序的执行过程严格按照事件发生的时间顺序执行 本节将介绍为读者Flex开发技术的特点 优点和新特性 1 1 1Flex的技术特点 Flex可以在企业内部或在Web上创建富互联网应用程序 RIA 堪称最完整 最强大的RIA开发解决方案 它使企业能够创建个性化的丰富多媒体应用程序 极大地提高用户的体验 彻底革新人与Web的交互关系 1 增强用户体验2 完善的开发环境3 通用的配置环境4 企业级的特征5 消除页面加载6 标准的架构7 与浏览器兼容 1 1 2FlexSDK4的新特性 Flex4较之Flex3有了许多令人兴奋的新特性 1 新增主题和组件2 增强布局方式3 增强特效和滤镜效果4 新增双向绑定功能5 增强的CSS6 增强的HTML模板7 增强的状态8 增强ASDoc的支持9 运行时共享库10 本地化 1 2FlashBuilder的下载与安装 FlashBuilder的安装文件可从Adobe官方主页下载 安装文件版本有FlashBuilder4StandaloneInstaller版本和FlashBuilder4PluginforEclipse版本两种 FlashBuilder4StandaloneInstaller是独立的开发工具的版本 FlashBuilder4PluginforEclipse是可将Flex4集成于Eclipse的安装插件 本节介绍FlashBuilder4StandaloneInstaller的下载与安装 1 2 1安装FlashBuilder的系统要求 FlashBuilder4可以安装在Windows操作系统上 也可以安装于MacOSX操作系统中 安装FlashBuilder4的最低配置如下 1 Windows操作系统最低要求2 MacOSX操作系统最低要求 1 2 2下载FlashBuilderBeta 1 浏览器中输入 1 2 3FlashBuilder4Beta的安装 1 双击 FlashBuilder exe 弹出选择安装语言对话框 2 单击 OK 按钮 弹出安装第一步骤 简介 对话框 3 单击 下一步 按钮 弹出安装第二步骤 许可协议 对话框 4 选择 本人接受许可协议条款 单选框 单击 下一步 按钮 弹出安装第三步骤 选择安装文件夹 对话框 1 2 3FlashBuilder4Beta的安装 5 在文本框中输入安装路径或是单击 选择 按钮选择安装路径 6 单击 安装 按钮 完成安装后自动弹出安装第五步骤 安装完毕 对话框 7 单击 完成 按钮 完成安装 1 2 4FlashBuilder的新特性 1 新增工作流模式与FlashCatalyst的支持2 新增网络监控功能3 添加单元测试的支持4 新增ASDoc的支持5 自动生成getter和setter6 自动生成事件处理函数结构7 增强调试器功能8 新增FlashCS4组件开发包9 导入和应用诸多主题10 新增类包浏览器 1 3Flex基础结构MXML介绍 开发者使用两种语言来写Flex应用程序 MXML和ActionScript MXML是一种XML标识语言 用于进行组件布局 MXML中的组件包括了可视组件和非可视组件 非外观组件可以是从服务器中读取的数据源或用户组件绑定至服务器中的数据 1 4建立第一个Flex4程序 下面以 HelloWorld 为第一个例子为读者详细说明如何建立第一个Flex4程序 步骤如下 1 选择 文件 新建 Flex项目 命令 弹出 新建Flex项目 对话框 2 在 项目名 文本框中输入项目名称 应用程序类型 下拉框选择 Web runsinAdobeFlashPalyer 3 在 主应用程序 文本框中输入默认项目启动的文件名 其他可默认 单击 完成 按钮 完成项目的创建 1 4建立第一个Flex4程序 4 在编辑工作区中单击 Design 按钮 进入设计模式 5 从左下角的 组件 列表 选择 控件 子文件夹下的 标签 控件 拖动控件到设计模式工作区 6 选择 标签 控件 然后在右下角的属性工作区里设置 标签 控件的属性 7 在代码模式下 生成的MXML代码 1 5编译与运行第一个Flex4程序 前面建立了 HelloWorld 程序 编译与运行程序的步骤如下 1 在想要成为程序默认初始页的mxml文件上右击 选择 设置为默认应用程序 2 菜单中选择 运行 运行HelloWorld 命令 FlashBuilder4就开始编译与运行程序 3 效果如图1 19所示 1 6小结 本章对Flex进行了介绍 包括Flex技术特点 新特性和优点 Flex应用程序具有丰富的交互性 操作性和用户体验 能开发出与HTML更强大的网络应用程序 本章图文并茂地讲解了FlashBuilder4的下载与安装 FlashBuilder4是Flex应用程序开发的利器 能快速 有效地开发Flex应用程序 有关FlashBuilder4的内容将在下一章介绍 本章最后以 HelloWorld 为例 为读者详细讲解了Flex应用程序的开发编写及编译运行过程 第2章熟悉开发环境FlashBuilder4 工欲善其事必先利其器 FlashBuilder4是Adobe公司推出的集成开发环境 FlashBuilder4工作环境是一种具有丰富特征的开发环境 有利于开发者开发Flex和ActionScript应用程序 FlashBuilder4建立在Eclipse这一开源的集成开发环境 IDE 上 用户可使用强大的代码编辑器 可视化设计器 调试工具等来开发Flex应用程序 2 1熟悉FlashBuilder4工作区 FlashBuilder4工作区是开发Flex应用程序的工作环境 熟悉工作环境对开发的益处是显而易见的 FlashBuilder4平台是基于Eclipse平台 因此与Eclipse的布局风格异常相似 FlashBuilder4平台的特点是集可视化编辑与代码编辑为一体 用户在FlashBuilder4环境下可方便地切换设计模式和代码模式 2 1 1Perspectives 透视 透视是一种布局风格 与任务 编辑器和视图相关联 一旦切换透视 对应的任务 编辑器或视图就可能发生改变 FlashBuilder4包含3种透视 Flash 透视 FlashDebug 透视以及 FlashProfile 透视 2 1 2Editors 编辑器 1 MXML编辑器2 ActionScript编辑器3 CSS编辑器 2 1 3Views 视图 视图是用以辅助用户管理工程和开发项目 用户通过视图可以较直观地处理一些需求 例如 包资源管理器 既可以管理工作区中的文件和文件夹 又可以浏览包和类的结构 2 2编译与运行Flex4程序详解 MXML语言和ActionScript语言都是需要编译后才能运行的 FlashBuilder4开发环境中集成了两者的编译器 用户只需选择相应的编译运行命令 本书在介绍第一个Flex程序 HelloWorld 程序时 简单地介绍了了如何编译与运行Flex应用程序 事实上编译时可选的参数较多 本节将为读者介绍详细的编译与运行过程 仍以 HelloWorld 为例 讲解编译与运行过程中的可选参数 2 3调试Flex4程序 程序常包含不可知的逻辑错误 这些错误不属于编译错误 编译器不能检查此类错误 例如 程序中要判断闰年 代码的语法正确但判断的方法是错误的 此时编译器不会报错 使用在调试功能能跟踪代码每一步的执行 从而检查逻辑错误 FlashBuilder4开发环境有强大的调试功能 有利于程序进行代码检查 本节介绍如何调试Flex应用程序 包括添加断点 开始调试 监视变量等 2 3 1添加断点 断点的作用是使应用程序在带断点的代码行处中断 从而开始检查代码 同时 用户可使用FlashBuilder4自带的调试工具检测并修复错误 例如 变量视图和表达式视图 在代码编辑器中添加断点的方法很多 调试器只允许在以下代码的断点处中断 MXML标签中包含ActionScript事件处理 如 其中 click 是单击处理事件 ActionScript代码中 可以是MXML文件中的标签下 也可以是ActionScript文件中 ActionScript文件中的任何代码行 2 3 2调试程序 在设置完断点后可选择 运行 调试 命令 选择相应的运行配置开始调试 也可单击工具栏上的按钮或快捷键F11开始调试 调试器运行后就会自动进入 FlashDebug 透视 其中比较有用的是调试视图 在调试程序时常需要监视某些变量的变化 从而发现代码中的错误 变量视图能自动跟踪程序中变量的变化 2 4Flex4项目工程概述 Flex4现支持创建的项目工程有三类 Flex项目 ActionScript项目 和Flex库项目 不同的工程用于开发不同的项目 Flex项目工程是普通的RIA工程 主要用于开发互联网应用程序 ActionScript项目工程主要用于开发ActionScript类库 Flex库项目用于开发共享库 可以是自定义组件 也可以是ActionScript代码 2 4 1Flex项目 Flex项目是最基础配置的工程 Flex项目包括两种应用程序类型 Web和Desktop 使用Flex框架 XML Webservices等来开发Flex应用程序 Web应用程序类型是在FlashBuilder4中编译后会将可执行文件 swf文件 放在HTML文件中 最终生成的是Web应用程序 Desktop应用程序类型是在FlashBuilder4中编译后会将文件放在AIR平台中 最终生成的是AIR应用程序 2 4 2ActionScript项目 ActionScript项目使用的是FlashAPI 而不是Flex框架 ActionScript项目没有可视化的表现 也就是说ActionScript应用程序中没有设计模式这样的概念 ActionScript项目编译后也可运行于FlashPlayer中 2 4 3Flex库项目 Flex库项目用以创建自定义的代码库 代码库可共享于应用程序或是其他开发人员 Flex库项目编译后生成SWC文件 SWC文件包含组件 各种资源和catalog xml文件 SWC常被用于制作主题和制作应用程序的外观 一个SWC主题可以包括多个CSS文件和全部的图片 动画资源 2 5FlashBuilder4常用快捷键 快捷键的作用是使得开发工作更加高效和简单 FlashBuilder4中提供了许多快捷键 用户想要更多的快捷键说明 可选择 帮助 键辅助 命令或 Shift Ctr L 快捷键查看 2 6使用Flex帮助 开发Flex应用程序过程中难免会遇到困难 如对某一组件的某一属性不清楚 此时也查看Flex帮助 在安装FlashBuilder4后 自动安装了Flex帮助 用户可选择 帮助 帮助内容 命令打开Flex帮助 Flex帮助左下方的图标表示显示全部内容 图标表示显示搜索结果 图标表示显示链接 图标表示显示书签 单击不同的图标会切换至不同的内容 另外 用户可在左上方的 搜索 输入框中输入要搜索的内容 2 7小结 FlashBuilder4是功能强大的集成开发环境 能高效地开发Flex应用程序 本章主要介绍了FlashBuilder4的相关基础 内容包括熟悉FlashBuilder4工作区 如何编译运行程序 如何调试程序 不同项目工程的作用 常用快捷键 Flex帮助的使用等 通过本章的学习 读者会对FlashBuilder4的开发环境会有一个比较清楚的了解 第3章ActionScript3 0基础 ActionScript3 0是在FlashPlayer运行环境下的编程语言 是一种面向对象的语言 在Flex工程中 使用ActionScript3 0语言作为编程语言 应用程序的功能实现全部依赖于ActionScript3 0 3 1ActionScript3 0概述 ActionScript3 0是运行于FlashPlayer运行环境的编程语言 使用新的ActionScript虚拟机AVM2 AVM2使用新的二进制指令集 并在性能上有很大改进 同时 ActionScript3 0使用面向对象模型 扩展和提高了应用程序接口 ActionScript3 0代码被FlexBuilder或Flash中的编译器编译成二进制数据 这种二进制数据被装入SWF文件中 然后运行于FlashPlayer运行环境中 3 2使用ActionScript3 0 Flex工程中可有两种方式使用ActionScript3 0代码 一种是在MXML文件的标签下使用ActionScript3 0代码 另一种是直接在AS文件中编写ActionScript3 0代码 3 2 1在MXML文件中直接编写ActionScript3 0 在MXML文件中编写ActionScript3 0代码 只要在MXML文件下插入标签 在MXML文件中的标签下使用ActionScript3 0 在FlexBuilder3的编辑器中输入标签会自动封闭 例如 输入 后 自动生成封闭区域 3 2 2在AS文件中编写ActionScript3 0 ActionScriptClass ActionScriptFile和ActionScriptInterface都属于AS文件 它们三者的文件格式都为AS格式 不同的只是其中的定义有所区别 Flex应用程序中最常使用的AS文件是ActionScriptClass 也就类的定义 用户可使用ActionScriptClass创建向导来完成创建 3 2 3MXML中引用AS文件 MXML文件中若要引用AS文件有两种方式 一种是引用使用标签中的 source 属性 这种方式可看成是将MXML文件和AS文件分离 从而减小MXML文件的代码 提高重用性 另外一种方法是引用ActionScriptClass 类 使用这种方法的前提是AS文件中定义的是一个类 3 3创建第一个ActionScript3 0应用程序 用户可以使用Flash FlexBuilder Dreamweaver等任何文本编辑器编写ActionScript3 0代码 as格式文件 1 设计ActionScript3 0应用程序2 创建HelloWorld工程和Greeter类3 编写Greeter类4 HelloWorld mxml文件中添加ActionScript3 0代码5 编译运行程序 3 4小结 ActionScript3 0是Flex应用程序中的编程语言 控制Flex应用程序的执行 完成应用程序的各项功能 在Flex工程中使用ActionScript3 0有两种方法 一种是在MXML文件的标签下 一种是在AS文件中 对于大型应用程序来说 代码与模型的分离能使得程序更简洁 另外 将ActionScript3 0代码写入AS文件也提高了代码的重用性 可以使用标签中的Source属性来指明引用的AS文件 也可以使用引用类的方法来使用AS类 第4章数据类型 程序中使用的各种变量都应预先加以定义 即先定义 后使用 对变量的定义可以包括三个方面 数据类型 存储类型 作用域 数据类型表示了变量的性质 表示形式 占据存储空间等 在ActionScript3 0语言中 数据类型可分为 基本数据类型 其值不可以再分解为其他类型 复杂数据类型 复杂数据类型根据已定义的一个或多个数据类型定义 4 1常量与变量 对于基本数据类型量 按其取值是否可改变又分为常量和变量两种 在程序执行过程中 其值不发生改变的量称为常量 其值可变的量称为变量 常量和变量可与数据类型结合起来 如整型常量 整型变量 实型常量 实型变量 字符串常量 字符串变量 在程序中常量是可以不经说明而直接引用的 而变量则必须先定义后使用 4 1 1直接常量和符号常量 1 直接常量整型常量 12 0 3 实型常量 4 6 1 23 字符串常量 adf b 2 符号常量符号常量是用标识符代表一个常量 标识符是用来标识变量名 符号常量名 函数名 数组名 类型名 文件名的有效字符序列 4 1 2变量 程序中其值可以改变的量称为变量 一个变量应该有一个名字 在内存中占据一定的存储单元 变量定义必须放在变量使用之前 变量名和变量值是两个不同的概念 变量名是指变量的名称 用以区别不同的变量 变量值是指变量中包含的值 4 1 3变量赋初值 变量赋初值是指变量定义时就赋值给变量 也称为变量初始化 4 1 4局部变量和全局变量 局部变量也称为内部变量 是在函数内作定义说明的变量 其作用域仅限于函数内 离开该函数后再使用这种变量就是非法的 主调函数中定义的变量也只能在主调函数中使用 不能在其他函数中使用 形参变量是属于被调函数的局部变量 实参变量是属于主调函数的局部变量 允许在不同的函数中使用相同的变量名 全局变量也称为外部变量 是在函数外部定义的变量 4 1 5变量的存储方式 变量的存储方式按是否预先分配内存空间 可分为动态存储方式和静态存储方式 静态存储方式是指在程序运行期间分配固定的存储空间方式 动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间方式 用户存储空间可以分为3个部分 程序区静态存储区动态存储区动态存储区存放以下数据 函数形式参数自动变量 未加static声明的局部变量 4 1 5变量的存储方式 函数调用时的现场保护和返回地址对于以上这些数据 在函数开始调用时分配动态存储空间 函数结束时释放这些空间 有时用户希望函数中的局部变量的值在函数调用结束后仍保留原值 这时就需要指定局部变量为静态局部变量 使用用关键字static进行声明 4 2整型数据 整型数据用以存储整型量 如2 60等 整型数据可以是整型常量 也可以是整型变量 4 2 1整型常量 1 十进制整型常量2 八进制整型常量3 十六进制整型常量 4 2 2整型变量 1 整型变量的分类2 整型变量的定义3 整型数据的溢出 4 3实型数据 实型数据用以存储实型量 ActionScript3 0中实型数据类型只有一种 Number型 实型数据可以是实型常量 也可以是实型变量 4 3 1实型常量的表示方法 1 十进制形式2 指数形式 4 3 2实型变量 1 实型数据在内存中的存放形式2 实型变量的定义3 实型数据的舍入误差 4 4字符串数据 字符串数据存储字符串量 包括字符串常量和字符串变量 ActionScript3 0中字符串数据类型为 String型 4 4 1字符串常量 字符串常量是指存储字符串的常量 由一对双引号或单引号封闭的字符串序列 4 4 2转义字符 转义字符是一种特殊的字符常量 主要用来表示那些用一般字符不便于表示的控制代码 转义字符以反斜线 开头 后跟一个或几个字符 4 4 3字符串变量 字符串变量是指存储字符串的变量 4 5各类型数据之间的转换 变量的数据类型是可以转换的 转换的方法有两种 一种是自动转换 一种是强制转换 4 5 1自动类型转换 自动转换遵循以下规则 1 若参与运算量的类型不同 则先转换成同一类型 然后进行运算 2 转换按数据长度增加的方向进行 以保证精度不降低 3 在赋值运算中 赋值号两边量的数据类型不同时 赋值号右边量的类型将转换为左边量的类型 4 5 2强制类型转换 强制类型转换把表达式的运算结果强制转换成某种数据类型 在使用强制转换时应注意以下问题 1 括号所处的位置要正确 2 无论是强制转换或是自动转换 都只是为了本次运算的需要而对变量的数据长度进行的临时性转换 而不改变数据说明时对该变量定义的类型 4 6小结 ActionScript3 0中的数据类型分为基本数据类型和复杂数据类型 本章详细介绍了整型 实型 字符串型 根据数据是否是变量或常量 基本数据又可分为整型常量 整型变量 实型常量 实型变量 字符串常量 字符串变量 各数据类型间可进行转换 转换的方式有自动转换和强制转换两种 自动转换由编译器自动完成 强制转换由用户确定转换的方向 第5章运算符和表达式 ActionScript3 0语言中运算符和表达式很多 丰富的运算符和表达式使得ActionScript3 0语言功能强大 ActionScript3 0语言的运算符不仅具有不同的优先级 而且还有一个特点 就是它的结合性 在表达式中 各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定 还要受运算符结合性的制约 到底是自左向右进行运算还是自右向左进行运算 这种结合性增加了ActionScript3 0语言的复杂性 5 1ActionScript3 0运算符简介 ActionScript3 0语言的运算符可分为以下几类 算术运算符用于各类数值运算 包括加 减 乘 除 求余 自增 自减 共7种 关系运算符用于比较运算 包括大于 小于 小于等于 共6种 5 1ActionScript3 0运算符简介 特殊运算符 如括号 下标 取XML属性 等 赋值运算符用于赋值运算 分为简单赋值 复合算术赋值 和复合位运算赋值 3类 共11种 条件运算符用于条件求值 运算符为 逗号运算符用于把若干表达式组合成一个表达式 运算符为 5 2算术运算符和算术表达式 算术运算符是用来进行算术运算的操作符 是ActionScript3 0中最基本的运算符 使用算术运算符连接的表达式称为算术表达式 5 2 1基本的算术运算符 基本的算术运算符包括 加法运算符 加法运算符为双目运算符 表示两个量相加 具有右结合性 减法运算符 减法运算符为双目运算符 表示两个量相减运算 具有右结合性 乘法运算符 乘法运算符为双目运算 表示两个量相乘 具有左结合性 除法运算符 除法运算符为双目运算 表示两个量相除 具有左结合性 求余运算符 求余运算符为双目运算 表示两个量相除求余数 具有左结合性 5 2 2算术表达式 算术表达式是用算术运算符和括号将运算对象 也称操作数 连接起来的 符合ActionScript3 0语法规则的式子 5 2 3运算符的优先级和结合性 ActionScript3 0语言中 运算符的运算优先级共分为15级 1级最高 15级最低 在表达式中 优先级较高的先于优先级较低的进行运算 若两个运算符优先级相同 按运算符的结合性所规定的方向处理 ActionScript3 0语言中各运算符的结合性有两种 左结合性 自左至右 和右结合性 自右至左 5 2 4自增 自减运算符 自增运算符和自减运算符为单目运算 只对一个变量操作运算 可有以下4种形式 i i自增1后再参与其他运算 i i自减1后再参与其他运算 i i参与运算后 i的值再自增1 i i参与运算后 i的值再自减1 5 3关系运算符和关系表达式 关系运算符是用来对两个量之间的关系进行运算的操作符 使用关系运算符连接的表达式称为关系表达式 5 3 1关系运算符 在ActionScript3 0语言中有以下关系运算符 大于 大于或等于 等于 不等于 5 3 2关系表达式 关系表达式使用关系运算符连接其他对象 由于表达式可以又是关系表达式 就会出现嵌套的情况 关系表达式的值是真 和 假 分别用 1 和 0 表示 5 4逻辑运算符和逻辑表达式 逻辑运算符是用来进行逻辑运算的操作符 包括与 或 非运算 使用逻辑运算符连接的表达式称为逻辑表达式 5 4 1逻辑运算符 ActionScript3 0语言中提供了三种逻辑运算符 与运算 或运算 非运算与运算符 和或运算符 均为双目运算符 具有左结合性 非运算符 为单目运算符 具有右结合性 5 4 2逻辑运算的值 逻辑运算的值只有 真 和 假 两种 可用 1 和 0 来表示 求值规则如下 与运算 参与运算的两个量都为真时 结果才为真 否则为假 或运算 参与运算的两个量只要有一个为真 结果就为真 两个量都为假时 结果为假 以下代码说明与运算规则 非运算 参与运算的量为真时 结果为假 参与运算量为假时 结果为真 5 4 3逻辑表达式 使用逻辑运算符连接式子就得到逻辑表达式 其中的表达式可以又是逻辑表达式 从而组成了嵌套的情形 5 5赋值运算符和赋值表达式 赋值运算符包括简单的赋值运算符 和复合赋值运算符 如 等 使用赋值运算符连接的表达式称为赋值表达式 5 5 1简单赋值运算符和简单赋值表达式 简单赋值运算符为 由 连接的式子称为赋值表达式 赋值运算符 具有右结合性 5 5 2复合赋值运算符和复合赋值表达式 在赋值符 之前加上其他二目运算符可构成复合赋值符 如 5 6逗号运算符和逗号表达式 在ActionScript3 0语言中逗号 也是一种运算符 称为逗号运算符 其功能是把两个表达式连接起来组成一个表达式 称为逗号表达式 逗号表达式可以嵌套 即表达式1或表达式2又是逗号表达式 整个逗号表达式的值等于表达式n的值 并不是在所有出现逗号的地方都组成逗号表达式 5 7位运算符 位运算指对二进制数的位进行运算 ActionScript3 0语言提供了6种位运算符 按位与 按位或 按位异或 取反 右移 5 7位运算符 1 按位与运算2 按位或运算3 按位异或运算4 求反运算5 左移运算6 右移运算 5 8小结 ActionScript3 0中定义了许多运算符 这使得ActionScript3 0语言具有强大的运算能力 运算表达式是由运算符连接起来的式子 其运算方式及结果与运算符的特性紧密相关 本章主要介绍了算术运算符 关系运算符 逻辑运算符 赋值运算符和位运算符 算术运算符中详细介绍了各种基本的算术运算符 逗号表达式及自增 自减运算符 关系运算符用以比较两个量之间的关系 逻辑运算符中包括与 或 非运算符 赋值运算符包括简单的赋值运算符 和复合赋值运算符 位运算符中介绍了6种位运算符的特点及使用方法 第6章程序设计的基本结构 从程序流程的角度来看 程序可以分为三种基本结构 顺序结构 分支结构和循环结构 这3种基本结构可以组成所有的各种复杂程序 程序设计的基本组成部分是语句 不同语句组成不同的程序结构 例如 for语句 while语句组成循环结构程序 6 1顺序结构程序设计 顺序结构程序是指程序中的语句由表达式语句 函数调用语句 控制语句 复合语句 空语句或赋值语句构成 顺序结构是程序中最基本的结构之一 最大的特点是程序是以从上至下的顺序执行 6 1 1表达式语句 表达式语句是最基本的语句 由表达式加上分号 组成 6 1 2函数调用语句 由函数名 实际参数加上分号 组成 执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数 然后执行被调函数体中的语句 求取函数值 在后面函数中再详细介绍 6 1 3复合语句 把多个语句用括号 括起来组成的一个语句称复合语句 在程序中应把复合语句看成是单条语句 而不是多条语句 复合语句内的各条语句都必须以分号 结尾 在括号 外不能加分号 6 1 4空语句 只有分号 组成的语句称为空语句 空语句是什么也不执行的语句 在程序中空语句可用来作空循环体 6 1 5赋值语句 赋值语句是由赋值表达式再加上分号 构成 赋值语句的功能和特点都与赋值表达式相同 它是程序中使用最多的语句之一 在赋值语句的使用中需要注意以下几点 1 表达式嵌套2 变量赋初值与赋值语句的区别3 赋值表达式与赋值语句的区别 6 2分支结构程序设计 分支结构程序是指程序中存在分支的逻辑 需要分别处理各分支的逻辑 分支结构程序常用的语句有 if语句 if else语句 if else if语句 switch语句 分支结构是程序中最基本的结构之一 最大的特点是程序是分支处理 6 2 1if语句 if语句语义是 如果表达式的值为真 则执行其后的语句 否则不执行该语句 以下代码使用if语句实现取最大值 6 2 2if else语句 if else语句语义是 如果表达式的值为真 则执行语句1 否则执行语句2 6 2 3if else if语句 在使用if语句中还应注意以下问题 1 表达式形式的多样性2 if语句格式3 if语句中使用复合语句 6 2 4if语句的嵌套 当if语句中的执行语句又是if语句时 就构成了if语句嵌套的情形 在嵌套内的if语句可能又是if else语句 这将会出现多个if关键字和多个else关键字的情况 这时要特别注意if和else的配对问题 6 2 5switch语句 ActionScript3 0语言还提供了另一种用于多分支选择的语句 switch语句 switch语句的意思是 计算表达式的值 并逐个与其后的常量表达式值相比较 当表达式的值与某个常量表达式的值相等时 即执行其后的语句 然后不再进行判断 继续执行后面所有case后的语句 若表达式的值与所有case后的常量表达式均不相同时 则执行default后的语句 6 3循环结构程序设计 循环结构是程序中一种很重要的结构 其特点是 在给定条件成立时 反复执行某程序段 直到条件不成立为止 给定的条件称为循环条件 反复执行的程序段称为循环体用goto语句和if语句构成循环 while语句 do while语句 for语句 6 3 1goto语句 goto语句是一种无条件转移语句 goto语句一般不用 因为它将使程序层次不清 且程序不易读 但在多层嵌套退出时 用goto语句则比较合理 6 3 2while语句 while语句中的表达式是循环条件 语句为循环体 while语句的语义是 计算表达式的值 当值为真 非0 时 执行循环体语句 6 3 3do while语句 do while语句与while语句的不同在于 do while语句先执行循环中的语句 然后再判断表达式 6 3 4for语句 在ActionScript3 0语言中 for语句使用最为灵活 它完全可以取代while语句 for语句的执行过程如下 1 求解表达式1 2 求解表达式2 若其值为真 非0 则执行for语句中指定的内嵌语句 然后执行下面第3步 若其值为假 0 则结束循环 转到第5步 3 求解表达式3 4 转回上面第2步继续执行 6 3 4for语句 5 循环结束 执行for语句下面的一个语句 1 表达式省略2 表达式1的多样性3 使用逗号表达式 6 3 5循环的嵌套 循环体语句中可以又是循环语句 这样就形成了循环的嵌套 例如 for语句的循环体语句中又包括for语句 层层嵌套的循环在程序中经常见到 但一般嵌套的次数不宜超过5次 因为这样会使程序的可读性和执行效率变差 6 3 6几种循环语句的比较 四种循环语句都可以用来处理同一个问题 一般可以互相代替 其中for语句功能最强大 goto语句尽量少使用 while语句和do while语句的循环体语句中应包括使循环趋于结束的语句 从而避免死循环 用while语句和do while语句时 循环变量初始化的操作应在while和do while语句之前完成 而for语句可以在表达式1中实现循环变量的初始化 6 3 7break语句 break语句通常用在循环语句和开关语句中 当break语句用于do while语句 for语句或while语句中时 可使程序终止循环而执行循环后面的语句 break语句一般总是与if语句联合使用 即满足条件时便跳出循环 使用break语句应注意的地方包括 break语句对if else的条件语句不起作用 在多层循环中 一个break语句只向外跳一层 6 3 8continue语句 continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环 continue语句只用在for语句 while语句或do while语句中 常与if语句一起使用 用以加速循环 6 4小结 与其他大部分程序一样 ActionScript3 0语言中的基本结构也包括顺序结构 分支结构 循环结构 顺序结构程序由表达式语句 函数调用语句 复合语句 空语句 赋值语句组成 其特点是程序按顺序执行 分支结构程序中有不同的逻辑分支 需要分别处理 分支结构程序可使用if语句 if else语句 if else if语句 switch语句来实现分支处理 循环结构程序中当循环条件成立时 程序执行循环体中的语句 直至循环条件不成立 循环结构程序可使用while语句 do while语句 for语句来实现循环 其中for语句功能最为强大 break语句和continue语句可分别用于退出循环和加速循环 第7章函数 函数是ActionScript3 0源程序的基本模块 通过对函数模块的调用实现特定的功能 ActionScript3 0语言不仅提供了极为丰富的库函数 还允许用户建立自己定义的函数 用户可把算法编成一个个相对独立的函数模块 然后通用调用来使用函数 可以说ActionScript3 0程序的大部分工作都是由各式各样的函数完成的 7 1函数概述 1 函数定义角度从函数定义的角度看 函数可分为库函数和用户定义函数 库函数是指由ActionScript3 0定义的函数 用户无须定义 只需在程序中直接使用函数 用户定义函数是指由用户按需要自定义的函数 2 函数返回值角度有返回值函数 此类函数被调用执行完后将向调用者返回一个执行结果 称为函数返回值 7 1函数概述 无返回值函数 此类函数用于完成某项特定的处理任务 执行完成后不向调用者返回函数值 3 函数数据传送角度无参函数 函数定义 函数说明及函数调用中均不带参数 有参函数 也称为带参函数 在函数定义及函数说明时都有参数 称为形式参数 简称为形参 7 2函数定义的一般形式 函数按是否带参数可分为无参函数和有参函数 因此函数定义的形式也分无参函数和有参函数两种 两者的定义差别只在于参数定义部分 7 2 1无参函数的定义形式 无参函数是指不带有参数的函数 通常用于一些简单的处理 类型标识符指明了本函数的类型 函数名是由用户定义的标识符 函数名后有一个空括号 其中无参数 但括号不可少 中的内容称为函数体 7 2 2有参函数的定义形式 有参函数是指带有参数的函数 在ActionScript3 0中这种函数最为常见 7 3函数的参数和函数的返回值 函数的参数和函数的返回值是函数定义的最重要组成部分 函数的参数决定了主调函数应传递哪些量给被调函数 函数的返回值决定了被调函数的返回类型和主调函数的值 7 3 1形式参数和实际参数 函数的形参和实参具有以下特点 形参变量只有在被调用时才分配内存单元 在调用结束时 即刻释放所分配的内存单元 实参可以是常量 变量 表达式 函数等 实参和形参在数量上 类型上 顺序上应严格一致 否则会发生类型不匹配的错误 函数调用中发生的数据传送是单向的 即只能把实参的值传送给形参 而不能把形参的值反向地传送给实参 7 3 2函数的返回值 1 return语句返回函数值2 返回值类型一致3 返回空类型 7 4函数的调用 函数在定义后可在多处调用 函数调用的方法是使用函数名 所以在同文件中函数名不能相同 7 4 1函数调用的一般形式 ActionScript3 0语言中 实际参数表中的参数可以是常数 变量 其他构造类型数据或表达式 各实参之间用逗号分隔 7 4 2函数调用的方式 在ActionScript3 0语言中 可以用以下几种方式调用函数 函数表达式 函数作为表达式中的一项出现在表达式中 以函数返回值参与表达式的运算 函数语句 函数调用的一般形式加上分号即构成函数语句 函数实参 函数作为另一个函数调用的实际参数出现 7 5函数的嵌套调用 ActionScript3 0语言允许在一个函数的定义中出现对另一个函数的调用 这样就形成了函数的嵌套调用 即在被调函数中又调用其他函数 7 6函数的递归调用 一个函数在它的函数体内调用它自身称为递归调用 ActionScript3 0语言允许函数的递归调用 在递归调用中 主调函数又是被调函数 执行递归函数将反复调用其自身 每调用一次就进入新的一层 7 7数组作为函数参数 数组可以作为函数的参数使用 进行数据传送 数组用作函数参数有两种形式 一种是把数组元素作为实参使用 另一种是把数组名作为函数的形参和实参使用 7 7 1数组元素作为函数实参 数组元素也称下标变量 是数组中的某一项值 因此使用数组元素作为函数参数与使用普通变量作为函数参数并无区别 只是在发生函数调用时 把数组元素作为函数的实参传递给形参 7 7 2数组名作为函数参数 以数组名作为函数参数是指将数组的首地址作为参数传递给形参 函数形参根据数组的首地址就能在内存中找到数组的存储空间 用数组名作函数参数时 要求形参和相对应的实参都必须是类型相同的数组 7 8小结 函数是ActionScript3 0语言中的重要组成部分 函数根据是否带参分为无参函数和有参函数 函数的参数分为实参和形参两种 其中 实参是指主调函数中的参数 形参是指被调函数中的参数 实参和形参在内存空间里是两个完全不同的量 因此即使实参与形参定义了相同的名称也不会相互影响 第8章面向对象基础 客观世界中任何一个事物都可以看成一个对象 客观世界是由千千万万个对象组成 对象间通过一定的渠道相互联系 从计算机的角度看 一个对象应该包括两个要素 数据和操作 对象就是一个包含数据以及与这 8 1类和对象 客观世界中每一个实体都是对象 在ActionScript3 0中对象的类型称为类 class 类代表了某一对象的共性和特征 可以说类是对象的抽象 而对象是类的具体实例 在ActionScript3 0中先声明一个类 然后用类去定义若干个同类型的对象 用户可将类看成是一种数据类型 对象是这种数据类型的变量 8 1 1类的定义形式 在ActionScript3 0中定义一个类就是要定义类的成员都数据和成员函数 8 1 2类的成员类型 类的成员类型包括三大类 一类是私有 private 即外界不能调用 一类是公有 public 即外界可以调用 一类是受保护 protected 此内容将在后面小节中介绍 8 1 3调用类中的成员 类中的成员只有指明类型为public后 外界才能调用 外界可以调用类中的公有成员数据和公有成员函数 在调用类的成员之前需要实例化类 即创建类的对象 因为类中成员只有在创建类的对象时 才会在内存中分配空间 8 2构造函数和析构函数 类定义中一般都有两个基本的成员函数 构造函数和析构函数 构造函数一般用于在类对象创建时初始化成员数据 析构函数一般用于在类对象清除时释放成员所占的内存空间 在ActionScript3 0的类定义中构造函数和析构函数都可缺省 但语言中有默认的 不可见的构造函数和析构函数 在类定义中构造函数还是非常常用的 因为用户经常需要初始化成员数据 而默认的构造函数不初始化任何成员数据 8 2 1构造函数 构造函数用在在类对象创建时执行 一般用于成员数据的初始化 构造函数与其他成员不同 不需要用户发命令来激活它 在创建类的对象时自动执行 构造函数可用户自定义 但构造函数名称与类名必须一致 以便系统能识别其为构造函数 8 2 2析构函数 析构函数与构造函数正好相反 当类对象清除时自动执行析构函数 析构函数往往用来做释放类对象的内存空间 析构函数名也与类名相同 只是在函数名前面加一个波浪符 以区别于构造函数 析构函数不带任何参数 也没有返回值 包括void类型 一个类中只能有一个析构函数 如果用户没有编写析构函数 编译系统会自动生成一个默认的析构函数 但这个析构函数不进行任何操作 所以许多简单的类中没有显式的析构函数 8 3继承与派生 面向对象技术强调程序的可重用性 在ActionScript3 0中可重用性是通过继承机制来实现 继承是一种类的重用技术 用户创建新的类可以基于某一基础类 从而充分利用了已有资源 已存在的类称为基类或父类 通过继承而新生成的类称为派生类或子类 派生类继承了基类的所有数据成员和成员函数 并增加了新的成员 8 3 1派生类定义的一般形式 派生类继承了基类的全部成员 使用extends关键字表示此类是某类的派生类 派生类由于继承了基类 所以包括基类成员和其新增的成员 8 3 2派生类的保护成员 protected关键字和private public一样是用来声明成员的引用权限的 由protected声明的成员称为保护成员 保护成员不能被外界引用 这点和私有成员相同 但可以被派生类的成员函数引用 所以如果想在派生类引用基类的成员 可以将基类的成员声明为protected 8 3 3派生类的构造函数 派生类从基类继承了非私有成员函数和数据成员 但是在建立派生类的对象时 系统只执行派生类的构造函数 而不会自动执行基类的构造函数 也就是说 基类的构造函数是不能继承的 如果基类的构造函数包含对变量的初始化 那么在建立派生类的对象时 由于没有执行基类的构造函就会使基类的变量未初始化 8 4接口 在大型程序设计初期开发者往往不需要思考具体的逻辑过程 比如做菜 先想好要买哪些原料 大致采取怎样的做法 是煮 蒸或是炸 不用去思考味精放多少 要烧多久等琐碎的事情 这样做的好处是能整体把握程序设计 避免陷入代码实现误区 ActionScript3 0语言提供接口的概念 接口是包含一组虚方法的抽象类型 其中每一种方法都有其名称 参数和返回值 接口方法中不包含任何实现 只定义了有哪些方法 然后通过类来实现接口 一个类可以实现多个接口 8 4 1创建接口 在FlexBuilder3中创建接口的方法与创建类的方法类似 执行 File New ActionScriptInterface 命令 弹出新建接口向导 8 4 2使用类实现接口 接口定义了抽象的方法 但没有方法的具体实现 接口方法的具体实现可在类中完成 ICommand接口中定义了excute抽象方法 GetEngCaptionCommand类实现了接口中的excute方法 实现接口的类中一定要包括接口中全部方法的实现 上述ICommand接口中只有一个execute方法待实现 所以类中只实现了execute 若Command接口中有更多方法 类都需要一一实现方法 用户不能调用接口中方法 而且这样做也没有意义 因为接口不提供方法的具体实现 使用类实现接口后 用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论