Flex渲染机制中外部Flex渲染器用法指导

开发 后端
本文向大家介绍一下Flex渲染机制中的外部Flex渲染器概念,这种Flex渲染器的MXML标记和ActionScript代码与使用该渲染器的列表位于同一文件中。

你对Flex渲染机制是否熟悉,这里和大家分享一下Flex渲染机制中外部Flex渲染器的概念,相信本文介绍一定会让你有所收获。

Flex渲染机制之外部Flex渲染器

这种Flex渲染器的MXML标记和ActionScript代码与使用该渲染器的列表位于同一文件中。代码与文件中的其余代码内联。您应该还记得我说过,应该将内联渲染器视作单独的类。事实上,Flex编译器提取这些内联代码并为您创建类。内联渲染器的优势在于代码与列表位于同一位置,但是如果渲染器变得复杂时,这又变成了劣势。本文中我将向您展示如何自己创建类。

将Flex渲染器提取到一个外部文件有几个优势:

◆渲染器可轻松用于多个列表中

◆代码更容易维护

◆可以使用FlexBuilder的“设计”视图草拟出最初的渲染器

MXML渲染器

在第1部分中,您看到有一个复杂的渲染器用于DataGrid:

  1. <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Title"dataField="title"> 
  2. <mx:itemRenderer> 
  3. <mx:Component> 
  4. <mx:HBoxpaddingLeftmx:HBoxpaddingLeft="2"> 
  5. <mx:Script> 
  6. <![CDATA[  
  7. overridepublicfunctionsetdata(value:Object):void{  
  8. super.data=value;  
  9. vartoday:Number=(newDate()).time;  
  10. varpubDate:Number=Date.parse(data.date);  
  11. if(pubDate>today)setStyle("backgroundColor",0xff99ff);  
  12. elsesetStyle("backgroundColor",0xffffff);  
  13. }  
  14. ]]> 
  15.  
  16. </mx:Script> 
  17. <mx:Imagesourcemx:Imagesource="{data.image}"width="50"height="50" 
  18. scaleContent="true"/> 
  19. <mx:Textwidthmx:Textwidth="100%"text="{data.title}"/> 
  20. </mx:HBox> 
  21. </mx:Component> 
  22.  
  23. </mx:itemRenderer> 
  24. </mx:DataGridColumn> 
  25.  

 ◆Flex渲染器基于HBox,包含一个Image和一个Text,并且根据项目记录的pubDate字段设置背景色。可以使用以下步骤将同一Flex渲染器编写为一个外部文件:

如果您使用FlexBuilder,请新建一个MXMLComponent文件(我将我的文件命名为GridColumnSimpleRenderer,您可以随意命名),将根标记设置为HBox。不必担心大小。

如果您只使用SDK,请新建一个MXML文件(将它命名为GridColumnSimpleRenderer.mxml),将根标记设置为HBox。
在文件打开时,复制<mx:HBox>与</mx:HBox>之间的所有内容,但不要复制那些标记,因为文件中已有它们。结果应该如下:

  1. <?xmlversionxmlversion="1.0"encoding="utf-8"?> 
  2. <mx:HBoxxmlns:mxmx:HBoxxmlns:mx="http://www.adobe.com/2006/mxml" 
  3. width="400"height="300"> 
  4. <mx:Script> 
  5. <![CDATA[  
  6. overridepublicfunctionsetdata(value:Object):void{  
  7. super.data=value;  
  8. vartoday:Number=(newDate()).time;  
  9. varpubDate:Number=Date.parse(data.date);  
  10. if(pubDate>today)setStyle("backgroundColor",0xff99ff);  
  11. elsesetStyle("backgroundColor",0xffffff);  
  12. }  
  13. ]]></mx:Script> 
  14. <mx:Imagesourcemx:Imagesource="{data.image}"width="50"height="50" 
  15. scaleContent="true"/> 
  16. <mx:Textwidthmx:Textwidth="100%"text="{data.title}"/> 
  17. </mx:HBox> 
  18.  

 保存此文件。

现在修改DataGridColumn定义,方法是删除内联渲染器并将它替换为以下内容:

  1. <mx:DataGridColumnheaderTextmx:DataGridColumnheaderText="Title"dataField="title"  
  2. itemRenderer="GridColumnSimpleRenderer"> 

现在运行这个应用程序。您会大吃一惊。因为行很高。这是因为渲染器上的height="300"。

◆决定Flex渲染器的宽度和高度

List控制始终设置渲染器的宽度。本例中将忽略明确的width="400"。您应当编写自己的渲染器,假设用户更改列或列表宽度是宽度会更改。

高度则是另一回事。如果列表设置了明确的rowHeight,它会将这个高度强加到各行,忽略您对渲染器设置的任何高度。但是,如果您将列表的variableRowHeight属性设置为true,则列表会慎重考虑渲染器的高度。在本例中,高度明确设置为300,所以各行为300像素高。

要修复它,请从渲染器文件中删除明确高度,应用程序即可正确运行。

【编辑推荐】

  1. 解析Flex渲染器的使用
  2. Flex主题创建及支持的样式设置方式
  3. 全面认识Flex应用程序的六大元素
  4. 揭开Flex正则表达式的神秘面纱
  5. Flex数据绑定及其使用频繁的几种情况 
责任编辑:佚名 来源: csdn.net
相关推荐

2010-08-13 11:02:27

Flex渲染器

2010-07-27 15:28:02

Flex DataBi

2010-07-30 10:02:40

Flex验证控件

2010-07-28 10:38:29

Flex开源框架

2010-08-10 11:08:32

Flex外部样式表

2010-07-29 09:44:17

Flex编程

2010-08-05 10:08:06

Flex效果

2010-08-06 09:45:50

Flex事件机制

2010-08-06 10:15:35

Flex绑定

2010-07-27 13:53:15

Flex ComboB

2010-08-06 10:32:49

Flex数据类型

2010-08-13 13:46:04

Flex效果组件

2010-07-28 10:48:48

FlexReport开

2010-08-05 09:05:14

Flex Button

2010-08-05 13:44:12

Flex布局

2010-08-04 14:07:59

Flex事件机制

2009-07-15 13:48:26

Swing模型和渲染器

2014-06-18 10:34:41

Android字体渲染器OpenGL ES

2009-07-16 10:26:49

渲染器接口Swing

2010-08-09 15:09:27

Flex数据访问
点赞
收藏

51CTO技术栈公众号