24.7.处理测试用例事件

评论(0)浏览(61)分类:flash/flex/fcs/AIR
24.7.处理测试用例事件24.7.1. 问题我需要等待TestCase中的某个事件。24.7.2. 解决办法使用addAsync FlexUnit方法24.7.3. 讨论TestCase的测试行为经常会出现等待异步事件问题。如果TestCase方法只涉及同步事件,比如当改变属性时property change事件立即触发,不需要特殊的处理。但是当涉及到异步事件时你就要特别小心了。一般需要在测试中监听异步事件, 如URLLoad 是..

24.6.测试用例之间共享测试数据

评论(0)浏览(90)分类:flash/flex/fcs/AIR
24.6.测试用例之间共享测试数据24.6.1. 问题我想在多个测试用例之间共享数据,包括简单的或复杂的测试数据实例。24.6.2. 解决办法创建能生成所需测试数据实例的工厂类。24.6.3. 讨论一般的单元测试都有多个测试用例,彼此之间需共享相同或类似的测试数据。这些数据可能很简单,比如是一个表示地址的object,也可能会很复杂,比如是以特定方式建立的相关实体的命令。不是通过剪..

24.5.在测试前后运行代码

评论(0)浏览(86)分类:flash/flex/fcs/AIR
24.5.在测试前后运行代码24.5.1. 问题我需要在每个测试用例测试前或测试后运行特定的代码。24.5.2. 解决办法重写TestCase类的setUp和tearDown方法。24.5.3. 讨论默认情况下,每个TestCase中的测试方法都会在自己的TestCase实例中运行。如果多个测试方法需要同一个系统状态或数据,你可以使用setUp方法统一进行设置而不用在每个测试开始前显式调用某个设置方法。同理,如..

24.4.添加测试用例到测试集合

评论(0)浏览(63)分类:flash/flex/fcs/AIR
24.4.添加测试用例到测试集合24.4.1. 问题我想添加测试用例到现有的测试集合中。24.4.2. 解决办法使用TestSuite的addTestSuite方法24.4.3. 讨论使用addTestSuite方法将测试用例添加到测试集合中,该方法接受一个TestCase类引用作为参数。在后台FlexUnit使用反射找到所有以test开头的方法并执行它们。下面的例子更新自24.2节的createTestSuite方法,添加RegExpTest到测试集中..

24.3.创建FlexUnit测试用例

评论(0)浏览(86)分类:flash/flex/fcs/AIR
24.3.创建FlexUnit测试用例24.3.1. 问题我需要创建FlexUnit TestCase类实例测试代码。24.3.2. 解决办法创建TestCase子类,包含一个或多个以test开头的方法。24.3.3. 讨论当创建继承自TestCase的ActionScript类,一般的命名方法是在类名后面添加Test作为后缀。例如,如果被测试类叫RegExp,则TestCase类将被命名为RegExpTest。另外一般把TestCase类和被测试类放在同一个包中..

24.2.运行FlexUnit单元测试

评论(0)浏览(66)分类:flash/flex/fcs/AIR
24.2.运行FlexUnit单元测试24.2.1. 问题我需要创建应用程序运行FlexUnit 测试并显示测试结果。24.2.2. 解决办法使用TestSuite 实例和TestRunnerBase 组件运行测试。24.2.3. 讨论TestRunnerBase 是默认的包含FlexUnit 框架的图形化测试运行器。想要用TestRunnerBase 测试创建的应用程序,编辑MXML 文件,加入如下内容:+展开-XMLmx:Applicationxmlns:mx="http://www.adobe...

24.1.创建应用FlexUnit框架的应用程序

评论(0)浏览(59)分类:flash/flex/fcs/AIR
24.1.创建应用FlexUnit框架的应用程序24.1.1. 问题我使用FlexUnit 框架类为应用程序创建测试并运行之。24.1.2. 解决办法下载和解压缩FlexUnit,把flexunit.swc 文件引入到应用程序编译路径中。24.1.3. 讨论FlexUnit 框架包括一个图形化的测试运行器和用于创建自定义测试的基类。你可以从http://code.google.com/p/as3flexunitlib/下载到,确认下载的是最新的版本。然后解压缩ZIP 文件..

第二十四章. FlexUnit单元测试

评论(0)浏览(158)分类:flash/flex/fcs/AIR
第二十四章. FlexUnit单元测试  随着Flex 应用程序变得越来越庞大和负责,单元测试已逐渐被广大Flex 开发者所接受和欢迎。所谓单元测试,就是一个确保项目中新增条件或改变不会引入更多的BUGs 或不会修改预期行为,使得大型团队能够不引入bugs 的情况下协调工作,确认小的独立的部分程序向特定的方法返回预期结果。这使得bugs 和异常能被迅速定位,因为正确的单元测试将能测..

23.17.创建系统托盘图标

评论(0)浏览(102)分类:flash/flex/fcs/AIR
23.17.创建系统托盘图标23.17.1.问题我想让应用程序运行在后台,不需要主界面。23.17.2.解决办法在mx:WindowedApplication根标签和描述文件里设置应用程序的可见性为false,使用DockIcon和SystemTrayIcon类,添加自定义程序图标。23.17.3.讨论是可以创建没有主界面的应用程序,且运行在后台。这些应用程序出现在系统托盘或停靠栏里。Mac OS X 和Windows操作系统都支持应..

23.16.检测用户是否在线

评论(0)浏览(69)分类:flash/flex/fcs/AIR
23.16.检测用户是否在线23.16.1.问题我想检测用户是否在线。23.16.2.解决办法设置NativeApplication的idleThreshold属性,监听userIdle和userPresent事件。23.16.3.讨论检测用户在线的原理是基于键盘和鼠标的活动状态,离线是指键盘和鼠标在一段时间内不处于活动状态。你可以设置一个时间期限判断用户是否在线。下面的例子使用NativeApplication实例检测用户在线:+展开..

23.15.检测和监控网络连接

评论(0)浏览(136)分类:flash/flex/fcs/AIR
23.15.检测和监控网络连接23.15.1.问题我想检测Internet连接和监视器是否可用。23.15.2.解决办法使用AIR monitoring API的ServiceMonitor, SocketMonitor, 和URLMonitor类。23.15.3.讨论Adobe AIR包含的类可检测网络资源是否可用,还有当连接改变时实时通知用户。这些类使得开发人员能够创建支持偶尔连接(occasional connectivity)的应用程序:当资源可用时,通过联机服务..

23.14.本地SQL数据库

评论(0)浏览(81)分类:flash/flex/fcs/AIR
23.14.本地SQL数据库23.14.1.问题我想让应用程序在本地保存和接收数据。23.14.2.解决办法在用户硬盘上创建数据库文件,执行SQL语句。23.14.3.讨论Adobe AIR 运行时引入了SQL数据库引擎,使我们可以为创建本地数据库存储信息。一个数据库被保存为一个文件,且没有限定存放于特定的目录下,这样可允许任何应用程序都可访问数据库中的数据。AIR的SQL引擎可创建关系型数..

23.13.在ActionScript和JavaScript之间跨脚本操作

评论(0)浏览(92)分类:flash/flex/fcs/AIR
23.13.在ActionScript和JavaScript之间跨脚本操作23.13.1.问题我想访问HTML元素节点,访问JavaScript变量和函数,操作CSS 样式。23.13.2.解决办法监听complete事件,使用mx:HTML控件的domWindow属性访问HTML DOM。23.13.3.讨论HTMLLoader类支持访问HTML文档的DOM对象。你可以访问HTML的节点元素,也可以和页面里的javascript交互,访问其变量和方法,也可以在JavaScript中调用ActionScript方法。..

23.12.添加HTML内容

评论(0)浏览(117)分类:flash/flex/fcs/AIR
23.12.添加HTML内容23.12.1.问题我想在应用程序中显示HTML内容。23.12.2.解决办法使用mx:HTML控件载入并显示HTML内容。23.12.3.讨论Adobe AIR 运行时支持在基于SWF的应用程序中渲染HTML。渲染引擎是基于WebKit技术构建,功能和基于WebKit引擎的浏览器一样。比如Safari。这个引擎的核心就是AIR HTML API中的flash.html.HTMLLoader类,它继承自flash.display.Sprite类..

23.11.与操作系统剪贴板交互

评论(0)浏览(65)分类:flash/flex/fcs/AIR
23.11.与操作系统剪贴板交互23.11.1.问题我想与操作系统剪贴板进行数据交换。23.11.2.解决办法使用Clipboard类的静态generalClipboard属性。23.11.3.讨论除了通过拖拽操作和系统剪贴板交换数据外,还可通过flash.desktop.Clipboard类的静态属性generalClipboard与剪贴板交换数据。AIR程序支持的数据交换格式有:位图数据,标准文本数据,HTML, 和URL格式。当数据可用时,可..

23.10.使用本地拖拽(Drag-and-Drop)API

评论(0)浏览(113)分类:flash/flex/fcs/AIR
23.10.使用本地拖拽(Drag-and-Drop)API23.10.1.问题我想在应用程序内外拖动数据.23.10.2.解决办法添加数据到剪贴板,使用NativeDragManager类管理拖拽操作。23.10.3.讨论通过本地的drag-and-drop API文件系统和AIR应用程序之间可以进行数据传输。当一个拖拽姿势启动后,指定格式的数据被添加到剪贴板并传递给NativeDragManager的doDrag方法。你可以注册事件监听器监听NativeDragManag..

23.9.使用File System控件

评论(0)浏览(132)分类:flash/flex/fcs/AIR
23.9.使用File System控件23.9.1.问题我想添加控件用于浏览和显示文件系统特定目录下的内容。23.9.2.解决办法使用SDK的文件系统控件。23.9.3.讨论Flex 3 SDK的AIR API提供了很多控件方便浏览电脑文件系统的目录。这些控件只可用在AIR程序中,是由Framework的基于列表的组件组合而成。如Tree, List, 和DataGrid。虽然这些文件系统控件的外观和交互和Flex组件复本是一样的,..

23.8.浏览本地文件

评论(0)浏览(93)分类:flash/flex/fcs/AIR
23.8.浏览本地文件23.8.1.问题我想使用打开对话框和保存对话框用于打开和保存文件。23.8.2.解决办法使用flash.filesystem.File类的browse开头的那些方法。23.8.3.讨论File类提供了一个对话框窗口用于打开一个或多个文件。使用File.browseForOpen方法选择一个文件时select 事件被触发, 使用File.browseForOpenMultiple 方法选择多个文件时selecteMutiple事件被触发..

23.7.使用加密的本地存储区

评论(0)浏览(104)分类:flash/flex/fcs/AIR
23.7.使用加密的本地存储区23.7.1.问题我想把数据存储到用户硬盘上且不可被其他程序所读写。23.7.2.解决办法使用AIR 程序中加密的本地存储区以加密存储信息。23.7.3.讨论当一个AIR程序被安装后,一个加密的本地存储区被创建,用于存储一些需要保密的信息。使用Windows的Data Protection API (DPAPI) 和Mac OS X的密匙链for AIR applications on Windows and Keychain for ..

23.6.对象序列化

评论(0)浏览(72)分类:flash/flex/fcs/AIR
23.6.对象序列化23.6.1.问题我想对自定义对象进行序列化并保存到硬盘驱动器的文件中。23.6.2.解决办法通过class-alias注册自定义类,使用ActionScript Message Format (AMF) 编码序列化对象,并使用FileStream.writeObject方法把对象存储到文件上。23.6.3.讨论使用AIR文件系统API,你可以把经过AMF编码序列化过的对象写入文件流缓冲区中。ActionScript语言中大多..

23.5.读写文件

评论(0)浏览(70)分类:flash/flex/fcs/AIR
23.5.读写文件23.5.1.问题我想在文件系统上创建,访问和写文件。23.5.2.解决办法使用AIR的file system API的File, FileStream, 和FileMode类。23.5.3.讨论一个File对象是一个指针,代表一个文件或一个目录。要读写文件到硬盘驱动器,你可以使用FileStream把File对象放入一个缓冲区,通过FileStream类的同步和异步方法读取和写入。当使用的同步的FileStream.op..

23.4.创建本地菜单

评论(0)浏览(86)分类:flash/flex/fcs/AIR
23.4.创建本地菜单23.4.1.问题我想提供一个本地菜单供用户执行特殊的命令。23.4.2.解决办法使用本地的菜单API 创建程序和窗体菜单。23.4.3.讨论本地菜单API类提供了操作系统本地菜单的相关特性。你可以添加菜单项以及监听菜单项选择事件。有好几种本地菜单类型,如何创建和交互这取决于你的AIR程序所运行的操作系统,因此你添加菜单时要确认是否支持所有目标操作系..

23.3.打开和管理本地窗体

评论(0)浏览(86)分类:flash/flex/fcs/AIR
23.3.打开和管理本地窗体23.3.1.问题我想在AIR程序中创建本地窗体23.3.2.解决办法使用flash.display.NativeWindow 和mx.core.Window 类23.3.3.讨论你可以依照操作系统的约定创建本地窗体,不仅仅是它们的功能还有它们的外观。而且除了可以轻松创建和其他桌面程序一样的外观和矩形形状的本地窗体,还可以通过style属性和自定义图像创建自定义皮肤,自定义窗体仍拥有操作窗..

23.2.理解AIR命令行工具

评论(0)浏览(130)分类:flash/flex/fcs/AIR
23.2.理解AIR命令行工具23.2.1.问题我想使用Flex 3 SDK中的命令行工具部署,调式和打包AIR程序。23.2.2.解决办法使用/bin目录下的amxmlc, adl,和adt工具。23.2.3.讨论Flex 3 SDK包含的命令行工具涉及编译,运行和打包等等。如果要编译一个AIR程序,可使用amxmlc工具并加上文件名路径作为参数,文件可以是HTML,ActionScript,或者MXML。本章的例子重点讲解利用Flex Fra..

23.1.借助Flex Framework创建一个AIR程序

评论(0)浏览(68)分类:flash/flex/fcs/AIR
23.1.借助Flex Framework创建一个AIR程序23.1.1.问题我想使用Flex和AIR APIs创建桌面应用程序。23.1.2.解决办法创建主应用程序文件,在MXML中用mx:WindowedApplication作为根标签,还有一个应用程序描述文件用于提供安装,访问和运行程序所需要的属性信息。23.1.3.讨论用Flex框架开发基于AIR的程序非常类似于开发Web用途的Flex程序,AIR程序提供与操作系统通信的能力。当开发基于Web 的..

第二十三章.Adobe Integrated Runtime API

评论(0)浏览(97)分类:flash/flex/fcs/AIR
第二十三章.Adobe Integrated Runtime API  Flex SDK中的类都可以用于开发基于Adobe Integrated Runtime (AIR)的桌面应用程序。.  Adobe AIR是一个跨平台的运行时环境,允许开发人员借助已有的web技术把富联网应用体验带到桌面上。AIR运行时提供统一的跨操作系统环境,使得开发人员集中精力面向Adobe AIR 平台开发程序而不用关心在不同的操作系统中构建和部署应用程序。AIR 框架也提..

22.12.使用连接报告优化模块

评论(0)浏览(68)分类:flash/flex/fcs/AIR
22.12.使用连接报告优化模块22.12.1.问题我想减小文件大小和模块的后续下载时间。22.12.2.解决办法当编译应用程序时使用mxmlc工具的link-report命令行参数生成一个连接报告文件,然后在编译模块时把报告文件作为load-externs命令行参数值,确保只有模块需要的类被编译进来。22.12.3.讨论当你编译模块时,所有模块依赖的自定义或框架代码都被编译进生成的SWF文件中。在这些代..

22.11.使用查询字符串传递数据给模块

评论(0)浏览(64)分类:flash/flex/fcs/AIR
22.11.使用查询字符串传递数据给模块22.11.1.问题我想在模块载入期间传送数据给模块。22.11.2.解决办法在模块SWF的URL里加上查询字符串,当模块加载完成后,使用模块的loaderInfo属性解析URL字符串。22.11.3.讨论你可以追加查询字符串参数给模块载入类的URL。当模块载入后,通过mx.modules.Module类的loaderInfo属性访问这个URL。使用ActionScript,你可以解析出有用URL中参数信息。..

22.10.与模块通信

评论(0)浏览(88)分类:flash/flex/fcs/AIR
22.10.与模块通信22.10.1.问题我想访问加载的模块和传递数据。22.10.2.解决办法使用mx.modules.ModuleLoader的child属性和mx.modules.IModuleInfo实例的factory属性,监听事件,调用公开方法,访问公开属性。22.10.3.讨论应用程序shell 通过ModuleLoader 和ModuleManager 的属性与被加载模块通信。对于mx:Application实例来说通信没有限制,因为模块也可以加载另..

22.9.载入来自不同服务器的模块

评论(0)浏览(60)分类:flash/flex/fcs/AIR
22.9.载入来自不同服务器的模块22.9.1.问题我想加载不同服务器上的模块。22.9.2.解决办法使用flash.system.Security类在主应用程序SWF文件和模块文件之间建立信任机制。22.9.3.讨论Flash Player的安全机制是基于域的,SWF文件访问同一个域的数据是不受限制的。当SWF文件载入到Flash Player后,安全沙箱被建立,允许此域的所有资源可被访问。在此模型下请确保SWF是访问外部资源..