8.6.1. 问题我想要让用户改变颜色,对比,或锐利图像。8.6.2. 解决办法创建一个ConvolutionFilter 的实例, 绑定ConvolutionFilter 的矩阵属性到用户可以改变的文本输入。然后添加滤镜到图像的滤镜数组,以适用于滤镜。8.6.3. 讨论ConvolutionFilter 是flash.filter 包中一个最多功能和复杂的滤镜。它可以用来作浮雕,检测边缘,锐化,模糊,等许..
8.5.1. 问题我需要在运行时操作和结合多张图片,并使用过滤器来改变这些图片。8.5.2. 解决办法把图像作为BitmapData 对象,使用BitmapData 类combine 方法把两个位图和并为一个新的图像。8.5.3. 讨论BitmapData 和Bitmap 类是在运行时操作图像和建立新效果的强大的工具。这两个类经常串联使用,但又有不同。BitmapData 类封装实际的数据到图像,..
8.4.1. 问题我需要为用户搜索MP3 文件的不同部分创建一个搜索控制条,和创建一个音量控制条来改变的MP3 播放的音量。8.4.2. 解决办法通过为声音的play 方法设置time 参数来从时间点开始播放声音。这样创建一个新的SoundTransform 对象将作为SoundChannel 的soundTransform。8.4.3. 讨论声音的play 方法接受一个开始点的参数:+展开-ActionScript..
8.3.1. 问题我希望允许用户播放一系列的MP3 文件。8.3.2. 解决办法使用Sound 和SoundChannel 类,当用户选择一个新的MP3 类时,使用渐进式下载方式下在一个新的文件。8.3.3. 讨论Sound 类的play 方法返回一个SoundChannel 对象,它提供存取的方法和属性控制左右声道声音音量的平衡,还有暂停和恢复一个特定声音的方法。例子,你可以使用这样的代..
8.2.1. 问题我需要在应用程序中显示一个FLV 文件。8.2.2. 解决办法在你的应用程序中使用VideoDisplay 类,并使用Button 对象,来实现播放和暂停。8.2.3. 讨论VideoDisplay 类包装一个flash.media.Video 对象,并且相当简单的向对象添加视频。将VideoDisplay 的source 属性设置为一个FLV 文件的URL 地址,把autoplay 参数设置为true,当NetStream..
8.1.1 . 问题我需要使用Flex 组件来显示一个图片。8.1.2 . 解决办法使用一个嵌入声明把图像文件编译到SWF 文件中,或者在在运行时载入它。8.1.3 . 讨论Flex 支持在运行时或在编译时导入GIF,JPEG,PNG 和SWF 文件,支持SVG 文件在编译时嵌入。你选择的方法依赖于图片的文件类型和应用程序的参数。任何嵌入式图像已经成为SWF 文件的一部分,所以不..
图像,位图,视频和声音,是一个范围很广的,可以深入探讨的话题,需要用单独的一章来介绍。因此,这里集中回答最常见的问题。当Flash 成为最主要的互联网视频实现方法和Flex框架更多的用在建立图片和MP3 应用时,了解这些元素是如何工作的就变得越来越重要了。Flash Player 提供多层次的工具来处理图像和声音。第一步是使用Image 类和VideoDisp..
7.13.1. 问题你需要创建一个被选中时是可以改变大小的renderer。7.13.2. 解决办法创建一个drop-in itemRenderer,实现IDropInListItemRenderer 接口,并且通过listData 监听List 的Scroll 和Change 事件,当这两个事件中的任意一个事件发生时,比较itemRenderer 中的data 与List 中selectedItem 中的data,如果相等,就设置currentState 为selec..
7.12.1.问题你要创建一个树。它的结点一个有三个状态的CheckBox。7.12.2.解决办法我们从三个方面去解决这个问题:1 创建TreeItemRenderer。这个renderer 要包含CheckBox;2 当CheckBox 是第三种状态时,将有一个黑色的小图片覆盖在CheckBox 上方,也就是说,这时我们看到CheckBox 的,不是空心的,也不是里边含有“勾”,而是里边含有一个实心的..
7.11.1. 问题你需要在用户开始编辑与结束编辑时给itemEditor 加一些effects。7.11.2. 解决办法在itemEditor 中创建一个state,当用户开始编辑它的时候,利用Transition 运行一个effect。7.11.3. 讨论在用户完成修改后运行一个effect 是很好实现的。使用DefaultListEffect。DefaultListEffect 定义了一个effect 在用户提交自己的修改之后运行:+展..
7.10.1.问题你需要在运行时修改itemRenderer 或itemEditor 的一些属性。7.10.2.解决办法ListBase 和DataGrid(原文是DataGridColumn,可能是作者搞错了。)都有makeRowsAndColumns 方法,继承并重写它。7.10.3.讨论我们可以在makeRowsAndColumns 方法中,通过一个循环完成对itemRenderer 样式的设置。+展开-XMLmx:Listxmlns:mx="http://www.adobe...
7.9.1.问题你需要在通过data 把图片传入itemRenderer 里并显示图片。7.9.2.解决办法创建一个新的renderer 类,并且利用commitProperties 方法和owner 属性可以完成这些工作。我们可以在renderer 拥有者所在的文件里定义一个方法,用于返回我们要图示的图片。7.9.3.讨论List 和ListBase 的设计者Alex Harui,在自己的blog 里写到:“你可以把Imag..
7.8.1.问题你要为DataGrid 创建一个含有CheckBox 的itemRenderer,无论DataGridColumn 的宽度如何,都要始终保持CheckBox 在renderer 的中央。7.8.2. 解决办法继承CheckBox 的类,并且重写updateDisplayList 方法,从而设置CheckBox 的位置,在clickHandler 中增加部分功能:根据CheckBox 的选中状态设置DataGrid 里的变量值。7.8.3. 讨论下边是一..
7.7.1. 问题我们需要创一个拥有一列CheckBox 的DataGrid,并且这个DataGrid 的表头也有一个CheckBox,当用户点击表头的CheckBox 时,这一列CheckBox 自动被选中或取消选中,我们这里所说的表头就是column 的headerRenderer。7.7.2. 解决办法创建一个类做为headerRenderer,并且在这个类里创建一个可以向它所在的DataGrid派发事件的方法,并且可以..
7.6.1.问题用一个图片或SWF 做菜单。7.6.2.解决办法用itemRenderer 对象加载SWF 文件,并自定义菜单。7.6.3.讨论自定义菜单的第一步是把你想要用到的字体和图形存在一些SWF 文件里,并且把这些SWF 文件放在一文件夹下。在我们的例子中,这个文件夹命名为“swf”,你可以用任工具生成这些SWF 文件。接下来,创建一个renderer 组件。在本例中我们使..
7.5.1.问题如果item editor 收到的data 是一个用户自定义对象,我们需要创建一个可以修改这个含有复杂类型对象的item editor。7.5.2.解决办法创建一个item editor,它可以返回data 中所有己经被修改过的属性。在List 上创建一个监听器,用于对itemEditEnd 事件的监听,在收到这个事件后要停止这个事件继续上父级派发(flex 冒泡的事件机制),并..
7.4.1. 问题你需要建立一个即可以用于item editor 又可以用于item renderer 的组件,并且item editor 会收到一个数组,我们希望这个数组能以combo box 的形式显示出来。7.4.2. 解决办法建立一个己经实现了IDropInListItemRenderer 的组件,并在它里边定义两个states即状态,一个状态用于显示editor 另一个用于显示renderer。当data 发生变化时,即..
7.3.1. 问题item renderer 需要访问它的父组件的一些数据。7.3.2. 解决办法实现IDropInListItemRenderer,通过drop-in renderer 访问它的父组件.7.3.3. 讨论实现了IDropInListItemRenderer 的renderer 不但能访问data 等一些传入的数据,还能通过BaseListData类型的一个属性访问renderer 的父组件(如List 或DataGridColumn)。mx.controls.list..
7.2.1.问题你想要在运行时改变List 或DataGridColumn 的渲染器,或改变渲染器的属性。7.2.2.解决办法使用一个ClassFactory 对象做为ItmeRdnerer。ClassFacotry 实现了IFactory 接口,你只要传一个类对象(即Class 类型的对象)给它,它就可以生成这个类的对象。7.2.3.讨论这种解决办法,使用了工厂设计模式,并且使用了flex 的一些内部机制。在使..
7.1.1.问题你想要为List 或DataGrid 建item renderers 。7.1.2.解决办法你可以定义一个item renderer 在MXML 的List 组件内部。或定义在另一个类文件中,再把这个类名指定在List 的itemRenderer 属性里。7.1.3.讨论有很多办法可以创建item renderers 最简单的办法是:作为itemRenderer 属性定义在父组件的内部:+展开-XMLmx:ListdataProvider="{..
renderer (渲染器),或item renderer,是flex 框架一个功能强大的特性,它的使用频率很高,通过它您可以用自定义的组件显示数组或集合的数据。渲染器可用于DataGrid, List, Tile,和ComboBox 这些数据容器。渲染器可以为这些容器的数据源中的每一个元素的数据设置渲染样式(即显示形式),从而控制这些数据的显示与更新。在Flex 的应用当中会经常用..
6.12.1. 问题我想异步刷新大数据量的GroupingCollection 表格,只在调用时重绘。6.12.2. 解决办法使用GroupingCollection.refresh(async:Boolean),设置异步标志为true。6.12.3. 讨论GroupingCollection.refresh 方法接受一个标志指示分组是否需要异步或同步执行。当数据行数量非常巨大时,设置标志为true 可在显示之前刷新分组结果。这通常用来..
6.11.1. 问题我想为表格数据生成汇总值6.11.2. 解决办法使用GroupingCollection 生成汇总值,配置AdvancedDataGrid 以便它看起来具有数据汇总功能。6.11.3. 讨论你可以使用GroupingCollection 生成数据汇总,配置AdvancedDataGrid 显示汇总数据。当生成数据汇总时,你不想排序和分组现有的dataField,因为你只是简单的显示数据而已,下面的示例代..
6.10.1. 问题我想搜索DataGrid 中的数据项并滚屏到匹配项6.10.2. 解决办法在ArrayCollection 中使用IViewCursor 的findFirst 方法。使用DataGrid 的scrollToIndex 进行滚屏。6.10.3. 讨论这项技术的关键之处在于DataGrid 和一个简单的表达,提供用户在文本框中输入city 名称,然后点击按钮开始搜索。当用户点击按钮(search_btn)后,DataGrid 的d..
6.9.1. 问题我想让DataGrid 的某些单元格可被编辑6.9.2. 解决办法设置AdvancedDataGrid 或DataGrid 的editable 属性为true6.9.3. 讨论这个例子中,AdvancedDataGrid 和DataGrid 控件绑定到同一个dataProvider。两个控件的editable 属性都设置为true。这样就可以编辑每个单元格了。由于两个控件都绑定同一个数据源,当编辑一个表格的单元格时将会..
6.8.1. 问题我想启动DataGrid 数据项拖动功能,以便用户能拖动它们到其他表格上。6.8.2. 解决办法设置源DataGrid 的dragEnabled 为true,和目标DataGrid 的dropEnabled 属性为true。6.8.3. 讨论要启动基于列表的控件比如DataGrid 的拖拽功能,最简单的方法就是设置相应的属性为true,因为Flex 框架将负责所有相关的底层工作。例如,下面的例子设..
6.7.1. 问题我想编程实现选择AdvancedDataGrid 多个单元格6.7.2. 问题设置AdvancedDataGrid 的selectionMode 属性为multipleCells 和selectedCells 属性为object数组,该数组包含被选择单元格的rowIndex 和columnIndex。6.7.3. 讨论AdvancedDataGrid 控件对于选择单元格提供了多种选项设置。selectionMode 属性值有以下几种选择:Multiple cells..
5.13.1.问题为List 组件中的选中项贴上一个图片5.13.2.解决方法覆盖ListBase 类的drawSelectionIndicator 方法并修改由该方法使用的指示器Sprite 对象。5.13.3.讨论List 控件通过drawSelectionIndicator 方法为在列表中选中的itemRenderer 创建外观。该方法的信息如下:+展开-ActionScriptoverrideprotectedfunctiondrawSelectionIndicator(indi..
5.12.1.问题当用户在特定的条目上右键单击或按住Control 键并单击(在Macintosh 中译者注)时创建一个定制上下文菜单项来显示5.12.2.解决方法创建ContextMenu 和ContextMenuItem 对象并分派它们到渲染器,它们将像itemRenderer一样被分派到列表.5.12.3.讨论上下文菜单项是用户在flex 应用程序上右键单击或按住Control 键并单击以后出现的,默认情..
5.11.1.问题显示稀疏填充数组中的空条目5.11.2.解决方法为List 控件设置nullItemRenderer.5.11.3.讨论只要在继承自ListBase 的任何类中的dataProvider 遇到空对象,则使用nullItemRenderer属性:+展开-XMLmx:TileListnullItemRenderer="oreilly.cookbook.NullItemRenderer"/NullItemRenderer.mxml 为典型的nullItemRenderer 列出了完整的清单:+展..