- 浏览: 650452 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
ssxszt:
...
解决PopUpManager弹出窗口RangeError: Error #2006: 提供的索引超出范围 -
lijiajia:
木子佳 写道楼主,想要源码学习,谢谢。kajiamuzi@16 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
juedi:
很好,是我需要的东东
Flex异常处理设计 -
暖暖fh:
大神,我想要源码,这个功能我折腾了好我啊 fuhan247@1 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
chenzi:
一样的代码,两台机器上面,完全不同的报错。。Flex实现htt ...
Flex使用Https协议
Flex 提供许多控制, 它们可以按不同方式显示大量数据。List 控制自己、DataGrid、Tree 以及包括图表和 AdvancedDataGrid 在内的可视类。默认情况下, Flex 列表控制将提供的数据显示为简单文本。但 Flex 的能耐远不止此, 列表控制提供了一种使用 itemRenderer 对其内容进行自定的方式。通过允许您使用 itemRenderer 完全控制列表每行 (或单元格) 的内容, Flex 使您能够编写出更引人注目、更具创意、更实用的应用程序。
本系列讨论 Flex itemRenderer 以及如何高效、有效地使用它们。本系列的第一部分侧重于内联 itemRenderer, 它们写入描述 List 控制的 MXML 标记中。之后的文章讨论使用 MXML 和 ActionScript 且更为复杂的 itemRenderer。
循环使用渲染器
人们经常尝试从列表外访问 itemRenderer。例如, 由于您刚从服务器那里收到新数据, 您可能要将 DataGrid 中第五行的第四列变为绿色。获取那个 itemRenderer 实例并在外部修改它对于 Flex 框架和组件模型而言是一个大工程。
要理解 itemRenderer, 您必须理解它们为何变成现在这样以及我们当初设计它们时的目的。在此, 当我用到“我们”时, 我指的是 Adobe Flex 设计小组。我与它没有关系。言归正传, 假设您要显示 1,000 条记录。如果您认为列表控制会创建 1,000 个 itemRenderer, 您就错了。如果列表只显示 10 行, 它会创建约 12 个 itemRenderer-这些足以显示各个可见行, 多出的几个则用于缓冲和性能。列表最初显示行 1–10。当用户滚动这个列表时, 它现在可能显示行 3-12。但那 12 个 itemRenderer 仍在那里: 及时滚动列表后, 也不会新建任何 itemRenderer。
以下是 Flex 执行的操作。滚动列表时, 那些依然显示相同数据 (行 3-10) 的 itemRenderer 将向上移动。它们并未发生任何变化, 只是移到了新位置。之前显示行 1 和 行 2 数据的 itemRenderer 现在移到行 10 的 itemRendere 下。然后, 为那些 itemRenderer 提供行 11 和 行 12 的数据。换言之, 除非您调整列表大小, 否则将重用/循环使用那些相同的 itemRenderer-它们只是移到新位置并且现在显示新数据。
Flex 的这一行为在特定编程环境中使情况变得更复杂。例如, 如果要更改第五行的第四列中某个单元格的背景色, 请注意如果用户滚动了该列表, 则该单元格的 itemRenderer 现在可能显示第二十一行的内容。
那么怎样进行这类更改呢?
itemRenderer 必须根据给它们显示的数据更改自己。如果列表的 itemRenderer 要根据数据值更改其颜色, 它必须查看获得的数据并更改自己。
内联 itemRenderer
我在本文中使用内联 itemRenderer 说明如何解决这个问题。内联 itemRenderer 直接写入 MXML 文件中列表控制出现的位置。我在下一篇文章中将说明如何编写外部 itemRenderer。内联 itemRenderer 最简单, 一般用于十分简单的渲染器或用于为较大的应用程序构建原型。内联 itemRenderer 本身并没有问题, 但随着代码变得复杂, 最好将它提取到自己的类中。
我将在所有示例中使用相同的数据: 一组书籍相关信息-作者、书名、出版日期和缩览图图像等。每个记录是一段 XML 代码, 如下:
<book> <author>Peter F. Hamilton</author> <title>Pandora's Star</title> <image>assets/pandoras_star_.jpg</image> <date>Dec 3, 2004</date> </book>
我将从使用 <mx:List>
控制的一个简单 itemRenderer 开始。这里将列出作者, 后跟书名。
<mx:List x="29" y="67" dataProvider="{testData.book}" width="286" height="190"> <mx:itemRenderer> <mx:Component> <mx:Label text="{data.author}: {data.title}" /> </mx:Component> </mx:itemRenderer> </mx:List>
这个 itemRenderer 太简单了, 可能使用 labelFunction 会更好, 但它至少允许您专注于重要部分。首先, 内联 itemRenderer 使用 <mx:itemRenderer>
标记定义它。这个标记包含 <mx:Component>
标记。这个标记必须放在这里, 因为它会告诉 Flex 编译器您正在定义一个组件内联。我马上会说明这到底是什么意思。
您在 <mx:Component>
标记中定义 itemRenderer。对于本例, 它是一个 <mx:Label>
并且文本字段设置为一个数据绑定表达式: {data.author}: {data.title}
。这点很重要。List 控制通过设置 itemRenderer 的 data
属性, 为每个 itemRenderer 实例提供 dataProvider 的记录。对于上述代码, 它意味着对于任何给定列表行, 内联 itemRenderer 实例将自己的 data
属性设置为 <book>
XML 节点 (如以上节点)。当您滚动列表时, data
属性也会更改, 因为 itemRenderer 被循环用于新行。
换言之, 行 1 的 itemRenderer 实例现在可能将其 data.author
设置为“Peter F. Hamilton”, 但当它滚出视图时, itemRenderer 被循环使用并且 (该 itemRenderer) 的data
属性现在可能将其 data.author
设置为“J.K. Rowling”。滚动列表时, 所有这一切都会自动进行-您不必操心。
以下是复杂一些的内联 itemRenderer, 它还是使用 <mx:List>
控制:
<mx:List x="372" y="67" width="351" height="190" variableRowHeight="true" dataProvider="{testData.book}"> <mx:itemRenderer> <mx:Component> <mx:HBox > <mx:Image source="{data.image}" width="50" height="50" scaleContent="true" /> <mx:Label text="{data.author}" width="125" /> <mx:Text text="{data.title}" width="100%" /> </mx:HBox> </mx:Component> </mx:itemRenderer> </mx:List>
确实区别不大。这次不是 <mx:Label>
, itemRenderer 是一个 <mx:HBox>
并包含 <mx:Image>
、<mx:Label>
和 <mx:Text>
控制。数据绑定依然将可视与记录关联在一起。
发表评论
-
图片背景使用九宫格
2012-07-24 10:20 0[Embed(source="../ass ... -
Flex弹出窗口做为Module
2012-07-23 18:00 0今天才知道原来TitleWindow也可以单独编译 ... -
Repeater使用简介
2012-05-09 19:26 1685mx组件中的Repeater类似与sprak中的Da ... -
Flex失效机制
2012-02-29 17:19 3031一、什么是失效机 ... -
Image倒影效果
2012-02-20 10:11 1735利用spark的BitmapImage实现倒影效果 ... -
Flex设置z轴的index
2012-02-13 14:58 4812flex4的UIComponent新增了dept ... -
得到一个字符的Unicode编码
2012-02-09 12:59 2032ActionScript 3.0String类中函数charC ... -
解决PopupManager.createPopup报错:状态“inactive”未定义
2012-02-04 21:27 2252出现这种的场景是在Module中使用弹出窗口Pop ... -
用chrome浏览器调试flex程序
2012-02-04 18:55 6936开发flex程序难免需要debug,但是IE8浏 ... -
Flash Player11不能输入中文,请谨慎升级
2011-12-18 01:04 2716很多时候,Flash的程序需要集成到其他系统中 ... -
优化Flash Builder
2011-12-18 00:54 2677Flash Builder4中新增了一个ASDO ... -
设置DataGrid的DataGridColumn的width
2011-12-18 00:42 5220DataGrid的column的width属性不 ... -
RollOver和MouseOver的不同
2011-12-12 15:03 3051共同点:都是针对鼠标的进入和进出事件。 ... -
转 Adobe移动战略失败的幕后
2011-12-08 15:56 1378最近一段时间,Adobe和Apple两个昔日的好伙 ... -
Flash Builder该这样编译,希望adboe的人能看到
2011-12-06 12:17 0从3.0开始使用flash builder,对f ... -
List或DataGrid可变行高
2011-11-29 21:57 3175默认情况下List组件是每行的行高是固定的,但 ... -
访问flex sdk版本和Flash player版本
2011-11-16 15:52 1370下面的代码将flex sdk的版本号和Fla ... -
设置TitleWindow的closeButton的mode
2011-11-16 15:42 1232默认情况下,TitleWindow的closeBu ... -
DataGrid header显示tooltip
2011-11-15 17:18 2551有时需要在DataGrid的header上显示 ... -
flash右键菜单项关键字
2011-11-15 16:26 1263有时需要在flash的右键菜单中添加 删除 ...
相关推荐
比如,如果你有一个包含1000条记录的列表,但只有10行在屏幕上可见,那么Flex只会创建足够的渲染器来展示当前和未来可能需要的可视行,通常会额外创建一些作为缓冲。这意味着,当用户滚动列表时,原有的渲染器会被...
8. **响应式设计**:为了让SVG渲染器适应不同的屏幕尺寸,需要考虑响应式设计,确保在不同设备上都能正确显示。 9. **测试与调试**:在开发过程中,需要对各种PCB布局进行测试,确保渲染器的准确性和兼容性。可以...
SwiftMark是基于Swift编程语言开发的一个Markdown到HTML的渲染器,它的主要功能是将Markdown格式的文本转换成HTML,使得内容可以以丰富的网页形式展示。Markdown是一种轻量级的标记语言,广泛用于编写文档、博客文章...
内联itemRenderer则意味着我们可以在不影响整个应用结构的情况下,直接在MXML代码中定义和使用这些渲染器,而不是将其作为一个独立的类文件。 在Flex中,我们可以使用MX或Spark组件库来创建itemRenderer。MX组件库...
Flutter的Markdown渲染器。 它支持,但不支持内联HTML。 概述 包将轻量级标记语言Markdown渲染到包含富文本表示形式的Flutter小部件中。 flutter_markdown建立在Dart 包的顶部,该包将Markdown解析为抽象语法树...
内联是一个模板过滤器,可与内联标记结合使用以将内容对象插入到其他内容片段中。 一个例子是将照片插入到博客文章正文中。 直接替换 django-basic-inlines/inlines 标记的一个例子是: <inline type=...
1. **性能优化**:对于计算密集型任务,例如矩阵运算、物理模拟或图形渲染,直接使用汇编可以避免不必要的函数调用开销,提高程序运行速度。 2. **硬件接口**:访问特定的硬件寄存器或设备控制器,如中断处理、DMA...
GCF通过在后台运行Chrome的渲染引擎,使得这些网站在IE上也能正常工作。这极大地提升了用户体验,因为用户不再需要升级浏览器或者使用其他浏览器来访问某些网站。 GCF的离线安装包设计是为了在网络连接不稳定或不...
实现这个功能可能涉及使用自定义渲染器,解析文本中的特定标记或URL,并将其替换为图片组件。这样,用户可以插入图片链接,而应用则会解析并显示相应的图像。 3. **@somebody提及机制**: 这是一种常见的社交网络...
《现代EPUB渲染器——基于JavaScript的技术探索》 在当今数字化阅读盛行的时代,EPUB格式作为开放标准电子书格式之一,被广泛应用于电子阅读设备和软件中。EPUB文件本质上是一种基于XML和ZIP的复合文档,它允许内容...
8. **性能优化**: 需要注意滚动流畅性,避免在滚动时不必要的计算和渲染,以及合理利用缓存来提高加载速度。 9. **许可证和合规性**: 使用开源项目时,需要遵守项目的许可证规定,确保你的应用符合YouTube服务条款...
2. `element.currentStyle`:这是IE浏览器特有的一个属性,可以访问元素的最终渲染样式,它包括了内联样式、样式表中定义的样式以及浏览器默认样式。此属性在标准浏览器中并不存在,因此需要进行浏览器兼容性判断。 ...
### CSS盒模型、块状元素与内联元素、CSS选择器 #### 一、CSS盒模型 CSS盒模型是理解CSS布局的关键概念之一。它定义了网页元素如何根据其CSS属性进行渲染。盒模型主要由四个部分组成: - **内容(Content)**:这...
这可以通过在渲染对象上添加事件监听器并在事件触发时调用相应的函数来实现。 4. **自定义组件**:如果你需要创建自己的控件,你需要定义其渲染逻辑,这通常涉及编写`render`方法或类似的函数,该函数根据当前的...
内联脚本加载器是一种用于JavaScript开发的工具,它的主要功能是在执行代码的过程中动态加载内联脚本。这种加载方式可以提高应用的性能,因为只有在真正需要时才会下载和执行相关的脚本,从而减少了初始页面加载的...
分布式渲染调度策略优化研究与实现这篇论文主要探讨了如何提高分布式渲染任务的执行效率,并在研究...这些研究成果不仅在理论上对分布式渲染调度策略进行了完善,而且在实践上也为相关领域的工程师提供了参考和指导。
1. **内联式itemRenderer**:直接在列表组件的定义中嵌入自定义渲染器的代码。这种方式简单直接,适合简单的定制需求。 2. **独立itemRenderer**:将项目渲染器定义为单独的MXML文件或ActionScript类。这种方式更加...
CaTeX是Flutter软件包,仅使用小部件和Flutter内联输出TeX方程(如LaTeX,KaTeX,MathJax等),无插件,无Web视图。等候接听请注意,此程序包当前处于保留状态。 这是因为我们目前主要从事其他工作。 因此,我们不能...
它使用快TypedArray闪电的TypedArray表示数据,并使用react-window实现超高效渲染。 您可以定义哪些需要呈现和阿斯计算出的怎么样,同时留下你的长相100%incharge。内联重命名内联文件创建受信赖全球各地一些最...