【发布时间】:2011-06-14 09:01:23
【问题描述】:
我需要在数据网格单元格上绘制叠加层。我希望叠加层位于底层单元格数据之上并显示交叉影线图案,即:水平和垂直线,就像单元格中的小网格。
覆盖的想法是显示当一段时间没有收到数据时,数据已经过时或陈旧。
我很确定我需要在渲染器的 updateDisplayList() 中做一些事情,但我没有使用过绘图 API,所以我不知道该怎么做。
任何帮助将不胜感激。
谢谢 标记
【问题讨论】:
我需要在数据网格单元格上绘制叠加层。我希望叠加层位于底层单元格数据之上并显示交叉影线图案,即:水平和垂直线,就像单元格中的小网格。
覆盖的想法是显示当一段时间没有收到数据时,数据已经过时或陈旧。
我很确定我需要在渲染器的 updateDisplayList() 中做一些事情,但我没有使用过绘图 API,所以我不知道该怎么做。
任何帮助将不胜感激。
谢谢 标记
【问题讨论】:
所以我假设 ItemRenderer 有 2 种状态,一种称为“新”,一种称为“旧”,对吗?
一个好消息:您不需要重写 updateDisplayList 函数。 Flex SDK 4+ 为您提供名为 FXG 的图形实用程序。您可以访问此链接了解更多信息:http://help.adobe.com/en_US/flex/using/WS145DAB0B-A958-423f-8A01-12B679BA0CC7.html
在你的情况下,你可以这样做:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="50" height="50" click="currentState = 'old'">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:states>
<s:State name="new" />
<s:State name="old" />
</s:states>
<s:BorderContainer width="50" height="50">
<s:Label text="{data.toString()}" />
</s:BorderContainer>
<s:Path data="M 0 10 L 50 10 M 0 20 L 50 20 M 0 30 L 50 30 M 0 40 L 50 40 M 10 0 L 10 50 M 20 0 L 20 50 M 30 0 L 30 50 M 40 0 L 40 50"
includeIn="old">
<s:stroke>
<s:SolidColorStroke color="black" weight="1" />
</s:stroke>
</s:Path>
</s:ItemRenderer>
想法:创建一个路径(绘制您的网格)并将其置于“旧”状态,每当项目更改为“旧”状态时,网格就会出现。
【讨论】: