- 浏览: 647399 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ssxszt:
...
解决PopUpManager弹出窗口RangeError: Error #2006: 提供的索引超出范围 -
lijiajia:
木子佳 写道楼主,想要源码学习,谢谢。kajiamuzi@16 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
juedi:
很好,是我需要的东东
Flex异常处理设计 -
暖暖fh:
大神,我想要源码,这个功能我折腾了好我啊 fuhan247@1 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
chenzi:
一样的代码,两台机器上面,完全不同的报错。。Flex实现htt ...
Flex使用Https协议
ActionScript itemRenderer
现在, 您将编写另一个 itemRenderer, 这次使用 ActionScript 类。在上一篇文章中, 有一个 TileList 包含这个内联 itemRenderer:
<mx:itemRenderer> <mx:Component> <mx:HBox verticalAlign="top"> <mx:Image source="{data.image}" /> <mx:VBox height="115" verticalAlign="top" verticalGap="0"> <mx:Text text="{data.title}" fontWeight="bold" width="100%"/> <mx:Spacer height="20" /> <mx:Label text="{data.author}" /> <mx:Label text="Available {data.date}" /> <mx:Spacer height="100%" /> <mx:HBox width="100%" horizontalAlign="right"> <mx:Button label="Buy" fillColors="[0x99ff99,0x99ff99]"> <mx:click> <![CDATA[ var e:BuyBookEvent = new BuyBookEvent(); e.bookData = data; dispatchEvent(e); ]]> </mx:click> </mx:Button> </mx:HBox> </mx:VBox> </mx:HBox> </mx:Component> </mx:itemRenderer>
您将把它转变为一个 ActionScript 外部 itemRenderer。您需要执行以下步骤:
-
新建一个 ActionScript 类。将它命名为 BookTileRenderer.as 并使它扩展 HBox, 就像内联 itemRenderer 那样。
package { import flash.events.MouseEvent; import mx.containers.HBox; import mx.containers.VBox; import mx.controls.Button; import mx.controls.Image; import mx.controls.Label; import mx.controls.Spacer; import mx.controls.Text; public class BookTileRenderer extends HBox { public function BookTileRenderer() { super(); } } }
- 创建成员变量, 用于存放子组件的引用。
private var coverImage:Image; private var titleText:Text; private var spacer1:Spacer; private var authorLabel:Label; private var pubdateLabel:Label; private var spacer2:Spacer; private var buyButton:Button;
- 覆盖
createChildren()
函数以创建子组件, 并将它们添加到 HBox。override protected function createChildren():void { coverImage = new Image(); addChild(coverImage); var innerBox:VBox = new VBox(); innerBox.explicitHeight = 115; innerBox.percentWidth = 100; innerBox.setStyle("verticalAlign","top"); innerBox.setStyle("verticalGap", 0); addChild(innerBox); titleText = new Text(); titleText.setStyle("fontWeight","bold"); titleText.percentWidth = 100; innerBox.addChild(titleText); spacer1 = new Spacer(); spacer1.explicitHeight = 20; innerBox.addChild(spacer1); authorLabel = new Label(); innerBox.addChild(authorLabel); pubdateLabel = new Label(); innerBox.addChild(pubdateLabel); spacer2 = new Spacer(); spacer2.percentHeight = 100; innerBox.addChild(spacer2); var buttonBox:HBox = new HBox(); buttonBox.percentWidth = 100; buttonBox.setStyle("horizontalAlign","right"); innerBox.addChild(buttonBox); buyButton = new Button(); buyButton.label = "Buy"; buyButton.setStyle("fillColors",[0x99ff99,0x99ff99]); buyButton.addEventListener(MouseEvent.CLICK, handleBuyClick); buttonBox.addChild(buyButton); }
我准备通过这一代码显示父子关系。同时, 确保在 Buy 按钮中包含一个事件侦听器。 - 覆盖
commitProperties()
函数, 并从数据设置用户界面控制。override protected function commitProperties():void { super.commitProperties(); coverImage.source = data.image; titleText.text = data.title; authorLabel.text = data.author; pubdateLabel.text = data.date; }
- 为 Buy 按钮添加单击事件处理函数。
private function handleBuyClick( event:MouseEvent ) : void { var e:BuyBookEvent = new BuyBookEvent(); e.bookData = data; dispatchEvent(e); }
- 将主应用程序中的 TileList 修改为使用 itemRenderer ActionScript 类。只需删除
inlineItemRenderer
并将它替换为标记中的itemRenderer
属性。<mx:TileList id="mylist" x="29" y="542" width="694" itemRenderer="BookTileRenderer" dataProvider="{testData.book}" height="232" columnWidth="275" rowHeight="135" >
如果要使用一个现有容器类, 如 HBox, 我不会使用 ActionScript 这样做。您会发现它比使用 MXML 文件复杂, 并且老实说, 性能方面几乎没有任何优势。
可重用的 itemRenderer
以下是一个 itemRenderer 示例, 它使用 CurrencyFormatter 显示一个数值。我称之为 PriceFormatter:
<?xml version="1.0" encoding="utf-8"?> <mx:Text xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.controls.dataGridClasses.DataGridListData; [Bindable] private var formattedValue:String; override public function set data(value:Object):void { super.data = value; formattedValue = cfmt.format( Number(data[(listData as DataGridListData).dataField]) ); } ]]> </mx:Script> <mx:CurrencyFormatter precision="2" id="cfmt" /> <mx:text>{formattedValue}</mx:text> </mx:Text>
这个 itemRenderer 的关键部分以红色标出, 设置可绑定变量 formattedValue
。首先, 您会发现 <mx:CurrentFormatter>
使用 id
cfmt
定义为 MXML 标记 (如果您愿意, 也可以使用 ActionScript 这样做)。在上例中, formattedValue
设置为 CurrentFormatter 的 format()
函数的调用结果。
此函数将 Number 作为其参数类型, 所以值被转换为 Number-这是因为列表的 dataProvider 是 XML 并且 XML 中的所有内容是文本; 如果为数据使用 Object 并且您有实际数值, 执行 Number 转变将是无害的。
如您所知, 数据是存放 itemRenderer 所显示项目的属性。使用 [ ]
记号是访问数据项目字段的另一种方法。例如, data['price']
是价格列。但是为了使这个 itemRenderer 可重用, 您不能为特定字段编码, 所以需要一种更普通的方法。
此时, listData
登台亮相。实施 IDropInListItemRenderer 接口的所有 Flex 组件都有一个 listData
属性。
注意: Text、Label、Button、CheckBox 等大多数控制都实施 IDropInListItemRenderer。HBox、Canvas 等大多数容器不实施此接口。如果要在扩展 Container 的 itemRenderer 中使用 listData
, 您必须自己实施 IDropInListItemRenderer; 我将在下一篇文章中讨论这个问题。
除了其他内容, 提供给 itemRenderer 的 listData
还包含 rowIndex
和控制, 该控制拥有 itemRenderer-DataGrid、List 或 TileList。将 itemRenderer 用于 DataGrid 时, listData
实际上是一个 DataGridListData 对象-它包含 columnIndex 以及与 DataGridColumn 关联的 dataField。以下是上述语句的明细, 从内部开始:
-
listData as DataGridListData
-它将 listData 转换为 DataGridListData 对象, 使您能访问它的 dataField -
.dataField
-该字段用于渲染的列。它使这个 itemRenderer 变得一般。可以将这个 itemRenderer 用于多个列。在本例中, dataField 是“price”。 -
data[ ... ]
-它访问项目中特定字段的数据。在本例中, 它是价格列。 -
Number( ... )
-它将值转换为 Number, 因为 format() 函数需要一个 Number 参数。 -
cfmt.format( ... )
-它将值格式化为货币。
发表评论
-
图片背景使用九宫格
2012-07-24 10:20 0[Embed(source="../ass ... -
Flex弹出窗口做为Module
2012-07-23 18:00 0今天才知道原来TitleWindow也可以单独编译 ... -
Repeater使用简介
2012-05-09 19:26 1658mx组件中的Repeater类似与sprak中的Da ... -
Flex失效机制
2012-02-29 17:19 3018一、什么是失效机 ... -
Image倒影效果
2012-02-20 10:11 1725利用spark的BitmapImage实现倒影效果 ... -
Flex设置z轴的index
2012-02-13 14:58 4796flex4的UIComponent新增了dept ... -
得到一个字符的Unicode编码
2012-02-09 12:59 2014ActionScript 3.0String类中函数charC ... -
解决PopupManager.createPopup报错:状态“inactive”未定义
2012-02-04 21:27 2243出现这种的场景是在Module中使用弹出窗口Pop ... -
用chrome浏览器调试flex程序
2012-02-04 18:55 6921开发flex程序难免需要debug,但是IE8浏 ... -
Flash Player11不能输入中文,请谨慎升级
2011-12-18 01:04 2701很多时候,Flash的程序需要集成到其他系统中 ... -
优化Flash Builder
2011-12-18 00:54 2670Flash Builder4中新增了一个ASDO ... -
设置DataGrid的DataGridColumn的width
2011-12-18 00:42 5199DataGrid的column的width属性不 ... -
RollOver和MouseOver的不同
2011-12-12 15:03 3037共同点:都是针对鼠标的进入和进出事件。 ... -
转 Adobe移动战略失败的幕后
2011-12-08 15:56 1368最近一段时间,Adobe和Apple两个昔日的好伙 ... -
Flash Builder该这样编译,希望adboe的人能看到
2011-12-06 12:17 0从3.0开始使用flash builder,对f ... -
List或DataGrid可变行高
2011-11-29 21:57 3169默认情况下List组件是每行的行高是固定的,但 ... -
访问flex sdk版本和Flash player版本
2011-11-16 15:52 1359下面的代码将flex sdk的版本号和Fla ... -
设置TitleWindow的closeButton的mode
2011-11-16 15:42 1214默认情况下,TitleWindow的closeBu ... -
DataGrid header显示tooltip
2011-11-15 17:18 2541有时需要在DataGrid的header上显示 ... -
flash右键菜单项关键字
2011-11-15 16:26 1244有时需要在flash的右键菜单中添加 删除 ...
相关推荐
Flex 渲染器是Flex框架中的一个重要特性,主要用于在列表控件如List、DataGrid、Tree等中定制数据显示。在Flex中,渲染器允许开发者自定义列表中每一项的外观和行为,以此来提高用户体验和视觉吸引力。本系列将深入...
《VRay 1.5 RC3 渲染器汉化版详解》 在计算机图形学领域,渲染器作为核心组件,对于最终图像质量和效果起着决定性的作用。VRay,由 Chaos Group 开发,是一款广泛应用的高质量渲染软件,广泛应用于建筑设计、电影...
在2008年,V-Ray 1.5 SP1是该渲染器的一个重要版本,提供了许多增强的功能和优化,使得3D艺术家能够创建更为逼真和高效的视觉效果。 首先,V-Ray 1.5 SP1的核心渲染技术得到了显著提升。它引入了先进的全局光照算法...
总的来说,Go-FauxGL提供了一个独特的机会,让开发者能够在不依赖外部库的情况下探索和实现3D图形渲染,这对于那些对图形编程感兴趣的Go程序员来说,是一个极好的学习和实验平台。通过研究和修改这个项目,你可以...
这个“19.3 LVGL使用外部SRAM”主题主要关注如何在资源有限的嵌入式设备上,利用LVGL库将图形渲染的数据存储到外部SRAM(Static Random-Access Memory)中,以提高性能和扩展内存空间。 首先,我们需要了解SRAM的...
3. **创建渲染器**:创建一个独特的值渲染器(`Unique Value Renderer`),该渲染器可以基于属性表中的特定字段(如人口数量)为每个地理要素分配不同的符号。 4. **设置渲染器属性**: - **色彩设置**:创建一个...
【作品名称】:基于c++控制台的3D第一人称射击(FPS)游戏,项目包含软件渲染器、游戏引擎层、游戏逻辑层【c++大作业】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大...
### mentalray独立渲染器教程知识点解析 #### 一、mental ray独立版本介绍 - **mental ray简介**:mental ray是一款高性能的渲染引擎,被广泛应用于电影特效、建筑可视化及产品设计等多个领域。它以其强大的光线...
像素 :alien_monster: 一个简单HTML画布像素艺术渲染器。快速开始添加到项目包含在您HTML中。 < script src =" path/to/pixels.js " > </ script >创建调色板调色板是有效颜色字符串的数组。 const ...
为了在网页上展示这个3D模型,还需要设置场景、相机和渲染器。通常,我们会在`init()`方法中创建这些: ```javascript const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window....
复古n-gon渲染器 现代JavaScript中的老式软件3D渲染器。 提供一个简单,简化的API,用于将n边的多边形以及点和线栅格化到HTML5画布(或独立的ImageData对象)中。 您可以查看各种交互式渲染示例。 请注意,尽管...
`stage.gl`是一个迷你WebGL渲染器模板,主要针对JavaScript开发人员,它提供了一个简洁的基础框架,用于快速搭建WebGL应用。在WebGL技术中,它扮演着简化和加速开发过程的角色,帮助开发者避免从零开始构建复杂的...
Blender插件以用于外部渲染器的格式导出Blender场景文件。 与Blender 2.79兼容的插件。 外部渲染器 PBRT 将选定的网格,灯光,摄像机导出为PBRT v3场景格式。 成分 特征 网格 所有选定的网格都将导出到models目录...
根据给定文件信息,本段内容将详细介绍Mitsuba渲染器的文档内容,包括但不限于Mitsuba渲染器的基本介绍、构建指南、使用方法、场景文件格式和插件参考等重要知识点。 ### Mitsuba渲染器基础 文档首先介绍了Mitsuba...
在"outline_demo_mine"这个文件中,可能包含了实现以上步骤的代码示例,例如加载模型、创建和配置轮廓、以及设置渲染器的代码片段。你可以通过查看和学习这些代码来理解具体实现细节,并根据自己的需求进行调整。 ...
标题提到的"VirtualReality:适用于MATLAB的Virtual Reality渲染器"正是这个工具箱的一个实例,它允许用户创建和探索虚拟世界,同时进行数据可视化和实验模拟。 MATLAB中的Virtual Reality渲染器是一个强大的组件,...
客户端PDF渲染器 增强客户端PDFKit: 添加HTML原语,例如h1,h2,h3,p,img,br,hr,表。 可以采用一个SimpleSchema,对其进行解析并呈现。 支持国际化。 可以渲染外部图像或CollectionFS中的图像。 支持常规...