- 浏览: 650412 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
ssxszt:
...
解决PopUpManager弹出窗口RangeError: Error #2006: 提供的索引超出范围 -
lijiajia:
木子佳 写道楼主,想要源码学习,谢谢。kajiamuzi@16 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
juedi:
很好,是我需要的东东
Flex异常处理设计 -
暖暖fh:
大神,我想要源码,这个功能我折腾了好我啊 fuhan247@1 ...
DataGrid和AdvancedDataGrid CheckBox全选功能 -
chenzi:
一样的代码,两台机器上面,完全不同的报错。。Flex实现htt ...
Flex使用Https协议
数据网格
也可以将内联 itemRenderer 用于 DataGrid。以下是应用于列的一个示例:
<mx:DataGrid x="29" y="303" width="694" height="190" dataProvider="{testData.book}" variableRowHeight="true"> <mx:columns> <mx:DataGridColumn headerText="Pub Date" dataField="date" width="85" /> <mx:DataGridColumn headerText="Author" dataField="author" width="125"/> <mx:DataGridColumn headerText="Title" dataField="title"> <mx:itemRenderer> <mx:Component> <mx:HBox paddingLeft="2"> <mx:Script> <![CDATA[ override public function set data( value:Object ) : void { super.data = value; var today:Number = (new Date()).time; var pubDate:Number = Date.parse(data.date); if( pubDate > today ) setStyle("backgroundColor",0xff99ff); else setStyle("backgroundColor",0xffffff); } ]]> </mx:Script> <mx:Image source="{data.image}" width="50" height="50" scaleContent="true" /> <mx:Text width="100%" text="{data.title}" /> </mx:HBox> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> </mx:columns> </mx:DataGrid>
如您所见, 这次比前两个要复杂得多, 但结构相同: <mx:itemRenderer>
包含一个 <mx:Component>
定义。
<mx:Component>
是为了提供一个 MXML 语法, 用于在代码中创建一个 ActionScript 类。想象一下, 剪切 <mx:Component>
块中出现的代码并将它放入一个单独文件中并提供一个类名称。当您查看内联 itemRenderer 时, 它看上去就像一个完整的 MXML 文件, 不是吗?有根标记 (本例中为 <mx:HBox>
), 甚至 <mx:Script>
块。
本例中的 <mx:Script>
块用于覆盖 set data 函数, 使得 itemRenderer 的背景色可以更改。在本例中, 无论书籍的未来出版数据为何时, 背景将从白色更改为其他颜色。记住, itemRenderer 是循环使用的, 所以如果测试失败, 还必须将颜色设置回白色。否则, 当用户滚动列表时, 所有 itemRenderer 最终将变为紫色。
outerDocument
scope 也更改了。我的意思是, 从 <mx:Component>
中定义的变量仅作用于那个组件/内联 itemRenderer。同样, <mx:Component>
外的内容在不同的作用范围内, 就像这个组件是在另一个文件中定义的那样。例如, 假设您为这个 itemRenderer 添加了一个 Button, 允许用户从在线零售商那里购买书籍。Button 调用它们的 click
事件上的函数, 所以您可以如下定义这个按钮:
<mx:Button label="Buy" click="buyBook(data)" />
如果在文件的 <mx:Script>
块中定义 buyBook()
函数, 会显示一个错误, 指出 buyBook()
是一个未定义的方法。这是因为 buyBook()
是在文件的作用范围内而不是在 <mx:Component>
的作用范围内定义的。由于这是一个典型用例, 使用 outerDocument
标识符可以避开这个问题:
<mx:Button label="Buy" click="outerDocument.buyBook(data)" />
outerDocument
标识符将作用范围更改为查找文件或外部文档, 并引用 <mx:Component>
。现在请注意: 这个函数必须是公共函数, 而不是受保护或私有函数。记住, <mx:Component>
被视为外部定义的类。
冒泡事件
现在我们来看另一个更复杂的示例。这是一个使用相同数据的 TileList。
<mx:TileList x="29" y="542" width="694" dataProvider="{testData.book}" height="232" columnWidth="275" rowHeight="135" > <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="[0×99ff99,0×99ff99]"> <mx:click> <mx:Script> <![CDATA[ var e:BuyBookEvent = new BuyBookEvent(); e.bookData = data; dispatchEvent(e); ]]> </mx:Script> </mx:click> </mx:Button> </mx:HBox> </mx:VBox> </mx:HBox> </mx:Component> </mx:itemRenderer> </mx:TileList>
当应用程序运行时, itemRenderer 看上去如图 1:
这个 itemRenderer 与 DataGrid 中使用的那个十分相似, 但“购买”按钮的 click
事件不使用 outerDocument
调用函数。在本例中, click
事件会创建一个自定事件, 后者通过 TileList 从 itemRenderer 中冒出, 并由可视链中的较高组件接收。
这是一个很常见的问题: 您有一个 itemRenderer, 而它包含一些交互控制, 通常是 Button、LinkButton 或其他单击时会导致发生特定动作的组件。可能是删除行或是本例中的购买书籍。
指望 itemRenderer 完成这个工作并不合理。毕竟, itemRenderer 只负责让列表看上去美观。事件 bubbling 允许 itemRenderer 将这个工作转交给他人。自定事件此时派上了用场, 因为这个事件与行中的数据相关;为何不将数据包含在事件中呢?如果那样, 事件接收方就不必苦苦搜寻它了。
结论
使用内联 itemRenderer 是一种快速自定列表外观的好方法。考虑将内联 itemRenderer 作为单独的 ActionScript 类-它们毕竟像有作用范围一样。如果必须引用包含文件中的函数或属性, 可使用 outerDocument
标识符更改作用范围。如果需要根据与 itemRenderer 的交互结果传达传递信息, 可使用自定冒泡事件。
并且记住: 不要试图抓住 itemRenderer 不放-它们将循环使用。它们只负责处理收到的数据。
我在下一篇文章中将讨论外部 itemRenderer。
发表评论
-
图片背景使用九宫格
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 5219DataGrid的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的右键菜单中添加 删除 ...
相关推荐
然而,随着渲染器功能的复杂性增加,内联itemRenderer可能会变得难以维护。这时,推荐将内联itemRenderer提取到单独的类中,创建外部itemRenderer,这有助于代码组织和复用。在后续的文章中,会详细介绍如何编写和...
本项目旨在创建一个能够生成美观且精确的PCB SVG渲染器,主要针对JavaScript开发人员,特别是对"其它杂项"感兴趣的开发者。 在JavaScript开发中,SVG渲染器的实现涉及多个技术点: 1. **SVG基础**:首先需要理解...
SwiftMark是基于Swift编程语言开发的一个Markdown到HTML的渲染器,它的主要功能是将Markdown格式的文本转换成HTML,使得内容可以以丰富的网页形式展示。Markdown是一种轻量级的标记语言,广泛用于编写文档、博客文章...
内联itemRenderer则意味着我们可以在不影响整个应用结构的情况下,直接在MXML代码中定义和使用这些渲染器,而不是将其作为一个独立的类文件。 在Flex中,我们可以使用MX或Spark组件库来创建itemRenderer。MX组件库...
Flutter的Markdown渲染器。 它支持,但不支持内联HTML。 概述 包将轻量级标记语言Markdown渲染到包含富文本表示形式的Flutter小部件中。 flutter_markdown建立在Dart 包的顶部,该包将Markdown解析为抽象语法树...
在32位环境下,处理器(如Intel x86系列)有32个通用寄存器,如EAX、EBX、ECX和EDX等,这些寄存器在执行计算、存储数据和指针操作时发挥关键作用。32位程序的地址空间可达4GB,这使得它能处理大量数据。 内联汇编的...
总的来说,谷歌内联框架是为了解决旧版Internet Explorer浏览器的兼容性问题而诞生的解决方案,通过内嵌Chrome的渲染引擎,让老旧浏览器也能体验到现代Web技术。然而,随着浏览器技术的发展和更新,GCF的重要性已...
内联是一个模板过滤器,可与内联标记结合使用以将内容对象插入到其他内容片段中。 一个例子是将照片插入到博客文章正文中。 直接替换 django-basic-inlines/inlines 标记的一个例子是: <inline type=...
实现这个功能可能涉及使用自定义渲染器,解析文本中的特定标记或URL,并将其替换为图片组件。这样,用户可以插入图片链接,而应用则会解析并显示相应的图像。 3. **@somebody提及机制**: 这是一种常见的社交网络...
《现代EPUB渲染器——基于JavaScript的技术探索》 在当今数字化阅读盛行的时代,EPUB格式作为开放标准电子书格式之一,被广泛应用于电子阅读设备和软件中。EPUB文件本质上是一种基于XML和ZIP的复合文档,它允许内容...
4. **优化性能**: 对于那些非关键路径的脚本,如分析或广告代码,可以使用内联脚本加载器在不影响用户体验的情况下加载。 ### JavaScript的关系 内联脚本加载器是JavaScript生态系统的一部分,它利用JavaScript...
### CSS盒模型、块状元素与内联元素、CSS选择器 #### 一、CSS盒模型 CSS盒模型是理解CSS布局的关键概念之一。它定义了网页元素如何根据其CSS属性进行渲染。盒模型主要由四个部分组成: - **内容(Content)**:这...
2. `element.currentStyle`:这是IE浏览器特有的一个属性,可以访问元素的最终渲染样式,它包括了内联样式、样式表中定义的样式以及浏览器默认样式。此属性在标准浏览器中并不存在,因此需要进行浏览器兼容性判断。 ...
在这个环境中,通过模型渲染测试,观察不同调度策略下,整个分布式渲染系统的性能变化。仿真环境的构建为研究分布式渲染提供了实验平台,有助于深入理解不同调度策略对渲染效率的影响。 总结而言,该论文通过深入...
8. **性能优化**: 需要注意滚动流畅性,避免在滚动时不必要的计算和渲染,以及合理利用缓存来提高加载速度。 9. **许可证和合规性**: 使用开源项目时,需要遵守项目的许可证规定,确保你的应用符合YouTube服务条款...
5. **样式管理**:渲染对象可能还包含了关于控件样式的属性,这可以是内联样式,也可以是类名,后者与CSS模块或CSS-in-JS库结合使用,以保持样式与组件的关联。 6. **可访问性**:确保渲染对象考虑到无障碍性...
- **默认项目渲染器**:`DataGrid`和`List`组件默认情况下,每行只显示一个文本字符串。这种简单的渲染方式虽然方便快速开发,但可能无法满足复杂界面需求。 - **自定义项目渲染器**:为了提供更丰富的用户体验以及...
CaTeX是Flutter软件包,仅使用小部件和Flutter内联输出TeX方程(如LaTeX,KaTeX,MathJax等),无插件,无Web视图。等候接听请注意,此程序包当前处于保留状态。 这是因为我们目前主要从事其他工作。 因此,我们不能...
它使用快TypedArray闪电的TypedArray表示数据,并使用react-window实现超高效渲染。 您可以定义哪些需要呈现和阿斯计算出的怎么样,同时留下你的长相100%incharge。内联重命名内联文件创建受信赖全球各地一些最...