22.8.1.问题我想具体控制模块的加载和卸载。22.8.2.解决办法直接访问ModuleManager类的方法来监听加载模块的各种状态事件。22.8.3.讨论ModuleManager 类管理着加载的模块。当调用ModuleLoader.loadModule 和ModuleLoader.unloadModule方法时mx:ModuleLoader组件内部就是和这个管理器进行着通信, 你可以直接访问ModuleManager 管理的模块。当模块..
22.7.1.问题我要载入模块22.7.2.解决办法使用mx:ModuleLoader容器载入模块22.7.3.讨论mx.modules.ModuleLoader类是一个容器类,功能类似于mx.controls.SWFLoader 组件。它载入SWF并把模块添加到应用程序的显示列表。ModuleLoader和SWFLoader不同之处在于它有一个约定, 这个被载入的SWF 须实现IFlexModuleFactory 。被编译的模块包含IFlexModule..
22.6.1.问题我想创建基于ActionScript的模块22.6.2.解决办法创建一个继承自mx.modules.Module或mx.modules.Modulebase的ActionScript类,使用mxmlc编译模块。22.6.3.讨论通过继承Module和ModuleBase类创建基于ActionScript的模块。根据模块在应用程序中所扮演的角色,继承Module或ModuleBase依据你是否需要显示列表。Module类是一个显示容器,继..
22.5.1.问题我想创建基于MXML的模块,以便在运行期间载入。22.5.2.解决办法创建一个继承自mx.modules.Module的MXML类,根标签为mx:Module,使用mxmlc命令行工具编译模块。22.5.3.讨论一个模块类似于一个应用程序也是用mxmlc工具编译,生成的SWF文件可被应用程序载入或被其他模块在运行期间载入。要创建一个基于MXML的模块,需继承mx.modules.Mod..
22.4.1.问题我想减小RSL文件的大小。22.4.2.解决办法使用optimizer命令行工具删除SWC文件中的调试代码和不必要的元数据。22.4.3.讨论默认情况下,生成的SWC文件中包含的library.swf文件包含调试代码和元数据代码。这对于在远程服务器作为RSL是没有什么用处了。要想创建一个优化过的RSL,首先通过compc工具创建SWC压缩文件,然后解压出library文件..
22.3.1.问题我想减少链接到Flex框架RSL的应用程序文件大小和下载时间。22.3.2.解决办法使用framework.swc文件编译应用程序,在Flex 3 SDK安装目录下可找到这个文件。22.3.3.讨论如果你熟悉用Flex Framework开发过应用程序的话,你可能注意到生成的文件很大,接着就是很长的下载时间。甚至是像下面的例子那样简单的程序,当编译时,结果生成的SWF..
22.2.1.问题我想把RSLs存放在服务器的不同地方以便在不同域的应用程序都能访问到。22.2.2.解决办法Compc工具创建RSL时加上compute-digest参数后,RSL摘要信息会在编译时期链接到RSL时存储到应用程序中。然后创建跨域的授权文件引入mxmlc工具的runtime-shared-library-paths选项指定的RSLs位置。22.2.3.讨论一个RSL摘要是一个散列码,被用来确认R..
22.1.1.问题我想创建一个可被下载和缓存的运行时共享库(RSL) .22.1.2.解决办法使用自定义类,组件和其他资源创建一个库,编译为SWC文件,然后解压出SWF文件中的library.swf 文件,引入到你的应用程序部署目录,作为一个RSL使用。22.1.3.讨论SWC文件是一种压缩文件格式,里面包含一个library.swf 文件一个catalog.xml文件。这个库是一组编译进swf..
当开发富互联网应用程序时,最终文件的大小和下载时间是必须要考虑的。Flex Framework提供了多种选择把应用程序代码分散到多个SWF文件中,以提高用户体验。 Runtime shared libraries (RSLs) 是可被下载并缓存到客户端的一些文件。当RSL被下载存留在客户端后,其他应用程序就可以访问缓存的RSL资源了。应用程序载入两种RSLs:未签名和签名..
21.10.1.问题我希望为组件创建元数据属性,这样就能用在为特定程序开发的组件上,或者保存类的外部属性。21.10.2.解决方案设置-keep-metadata项,这样编译器会保存Flash编译器生成的元数据,并在运行时查看那个数据。21.10.3.讨论运行期搜集元数据的功能使得你能够创建自己的标签,其他开发者可以使用这些标签标记类的特定属性,这很像Flex框架中..
21.9.1.问题我要确保我的程序运行的既快又好。21.9.2.解决方案使用下面的几个改善性能的技巧,如果你使用Flex Builder,那么可以使用调试窗口查看你的程序中关键的几步创建对象和内存回收的情况。21.9.3.讨论有时细小的调整会造成很大的不同。下面是一小部分能够改善你的程序性能的做法:1)如果不知道一个对象的类型,使用as操作符而不是使用try..
21.8.1.问题我希望为我的Cairngorm程序生成一些文件。21.8.2.解决方案使用Cairngorm框架生成器生成应用程序骨架。21.8.3.讨论Cairngen代码生成器是由Eric Feminella开发的基于Apache Ant的项目,其作用是简化创建基于Cairngorm的应用程序初始文件的工作。可以从http://www.ericfeminella.com/blog/cairngen/处下载。需要安装Ant 1.5,Ant文件才能..
21.7.1.问题我需要扩展Cairngorm FrontController类并创建自定义的事件类型。21.7.2.解决方案创建一个扩展自Cairngorm FrontController的类。在构造函数中,使用方法addCommand把CairngormEvent类型和command类关联起来。ServiceLocator应该扩展Cairngorm ServiceLocator类并要包含你的程序需要的所有服务。21.7.3.讨论FrontController类在Cairn..
21.6.1.问题我需要创建一个从FrontController中调用的命令类和一个跟这个命令通信的事务代理类。21.6.2.解决方案创建一个实现了ICommand和mx.rpc.IResponder接口的类。你的事务代理类不需要扩展任何类,也不需要实现任何接口。它需要在构造函数中接收一个IResponder接口的实例,这样它就可以处理传递给它的IResponder实例的结果,或调用错误处理..
21.5.1.问题我需要创建一个Cairngorm视图,并把它绑定到模型的属性上。21.5.2.解决方案创建一个实现了Cairngorm ModelLocator接口的模型类,往这个类里添加需要的数据属性,并把这些属性标记为可绑定的。然后把视图中所有数据驱动的控件绑定到这个模型的对应属性上。21.5.3.讨论Cairngorm控制器的视图不需要扩展任何类,它可以是任意类型。视图最..
21.4.1.问题我想在我的应用程序中使用Cairngorm小型结构。21.4.2.解决方案从http://labs.adobe.com处下载Cairngorm小型结构,然后把SWC文件安装到你的应用程序库中或者创建到源文件的链接。21.4.3.描述Cairngorm小型结构是一个著名的、应用广泛的、构建Flex应用程序及把应用程序和服务器整合起来的模型-视图-控制器结构。它第一次为人所知是在Fl..
21.3.1.问题我想在Flex中导入并使用Flash CS3的组件。21.3.2.解决方案把所有你想使用的Flash CS3的组件放到一个SWC文件中,并导入这个SWC文件。21.3.3.讨论有时你可能需要使用Flex Builder为设计者或更喜欢Flash CS3 IDE的人编写FLA使用的代码。有时需要创作一个既能在Flash CS3中又能在Flex Builder中编译的纯ActionScript应用程序。这时,在Fl..
21.2.1.问题我想在Flash IDE中创建用于Flex的容器组件。21.2.2.解决方案使用Flex组件工具包的[元件转换成Flex容器]的命令,或者更简单的,可以在Flash IDE中创建一个扩展自ContainerMovieClip的类,然后在你的应用程序中导入一个包含那个类的SWC。21.2.3.讨论ContainerMovieClip的实例可以拥有子项;响应点击,鼠标移动,及其他事件;定义视图状..
21.1.1.问题我想把Flash IDE中的创作的内容用到Flex程序中。21.1.2.解决方案在Flash CS3 IDE中安装Flex组件工具包(Flex Component Kit)。然后创建一个元件,并使用[转换成Flex组件]命令把它转换成组件。最后把影片发布成SWC,添加到Flex项目中就可以了。21.1.3.讨论你可以使用SWFLoader类或者flash.loader类把Flash的内容加载到Flex应用程序中..
对于关心工程项目快速实现的开发者来说,理解一个框架或者一个库,甚至一种编程语言,并不表示就知道如何用最优的方式使用它们创建应用程序。本章将针对使用Flex 3,Flex Builder IDE,Flash CS3 IDE 创建组件和架构应用程序给出一些常用的技巧。主要包括——从帮助你开发一个组件来架构应用程序,到使用Caringorm 框架。尽管有些是关于Flex..
20.9.1 问题我想把自定义组件上的动作或变化注册到浏览器的历史记录中,并让它们可以对浏览器的前进后退按钮进行导航。20.9.2 解决办法在Flex 中通过实现mx.managers.IHistoryManagerClient 接口来实现自定义的历史记录管理器。20.9.3 讨论为了实现此解决办法,历史记录管理器必须对你的Flex 项目/工程是激活的。为了验证,我们进入Flex Project..
20.8.1 问题我需要根据URL 参数控制Flex 3 容器内的科室内容20.8.2 解决办法使用BrowserManager 类和BrowserChangeEvents 控制可视性和跟踪可视Flex 组件的历史轨迹。20.8.3 讨论在此情形下,你是用URL 的fragment 片断来控制并跟踪Flex 应用里那些可视的容器和组件。当加载应用程序的时候,你就初始化BrowserManager 类实例,该实例可以帮助你解..
20.7.1 问题我需要从浏览器的URL 传递数据给Flex 控件,并且根据Flex 应用程序里的数据更新浏览器URL 的值,同时执行浏览器的前进或后退导航按钮。20.7.2 解决办法使用BrowserManager 类和BrowserChangeEvents 读取并写入数据到浏览器URL。20.7.3 讨论无论是通过地址栏的输入框还是还是通过使用导航控件(前进和后退按钮)来改变浏览器URL 的值,B..
20.6.1 问题我想从浏览器的当前URL 中读取并解析数据。20.6.2 解决办法使用BrowserManager 和URLUtil 类读取并解析当前页面的URL。20.6.3 讨论下面的例子展示了如何通过使用BrowserManager 和URLUtil 类读取并解析当前页URL,同时将解析结果写入一个mx:TextArea 实例中。URLUtil 类拥有可以帮助你解析当前URL 内不同片断的方法。在Flex 3中使用深..
20.5.1 问题我想让Flex 3 应用程序改变HTML 页面标题20.5.2 解决办法使用BrowserManager 类实例的setTitle 方法来改变HTML 页面标题。20.5.3 讨论Flex 3 的BrowserManager 类能够轻易地用于和包含它的HTML 页面的HTML DOM 交互。其特性之一就在于能够改变包含它的HTML 页面的标题。下面的ActionScript 代码段即可设置标题:+展开-ActionScriptpr..
20.4.1 问题我想在HTML 里调用该HTML 包含的Flex 应用程序的ActionScript 方法。20.4.2 解决办法使用ExternalInterface 在JavaScript 里设置对Flex 的回调方法并且在JavaScript 里调用ActionScript 方法。20.4.3 讨论ExternalInterface 类不仅仅封装了运行时与JavaScript 通信所需的功能,同时也包含了从JavaScript 内调用ActionScript 方法所有..
20.3.1 问题我需要在Flex 里调用JavaScript 函数。20.3.2 解决办法在AS 中使用ExternalInterface 类调用JavaScript 函数。20.3.3 讨论ExternalInterface 类封装了所有你在运行时可能使用到的与JavaScript 通信的功能。你只需要简单的使用ExternalInterface.call 方法来执行包含Flex 应用程序的HTML 页面里的JavaScript函数方法。要在ActionScrip..
20.2.1 问题我想从容器HTML 页面传递参数给Flex3 应用程序。20.2.2 解决办法使用FlashVars 直接在包含你的Flex3 SWF 的HTML 的embed标签内添加参数。20.2.3 讨论你可以在包含你的Flex 3 应用程序的HTML 内直接添加数据,并且使用FlashVars 变量在运行时轻易的读取这些数据。Flex 应用程序有两种办法可以获取这样的值。你可以仿照下面例子里面的做..
20.1.1 问题我想切换到一个独立的URL。20.1.2 解决办法使用navigateToURL 方法将浏览器切换到新URL。20.1.3 讨论navigateToURL 方法让你可以在原窗口、新建窗口或者指定的窗口框架里切换到一个新URL。这是Flex 应用和浏览器通信中最普遍的一种方式。要在你的Flex3 应用里调用navigateToURL 函数,使用下面的方法:+展开-XMLmx:Applicationxmlns:..
很多时候,我们可能发现应用程序需要和加载它的浏览器进行通信。与浏览器的通信能够让你建立一个可以超越Flex 应用本身的应用程序。你可以连接到已有的地址,通过JavaScript和其他应用程序通信,并且可以和浏览器的历史记录交互,作为开始。ExternalInterface 类让你能够调用加载Flash 应用的浏览器,获取页面信息,并且调用JavaScript 方法..