2014-08-29 73 views
0

我正在处理FLEX/AIR Spark列表,其中列出了具有不同宽度和高度的图像集合。访问来自itemrenderer的布局数据

我使用的是自定义布局,其工作原理是这样的:

  • 决定许多图像如何能适应基于它们的宽度目前排。

  • 以这样的方式证明它们:行中的第一张图片服从“左”边缘,并且该行中的最后一张图片服从“右”边缘,所以使用“顶部”和“底部”用户,让我们说10个像素。作为示例,假设当前行具有4个图像,图像将分别具有10个像素作为“左”边缘“右”边缘。但1-2和2-3之间的左右间隙将根据变化的宽度进行平均分配。

  • 现在我想画一个背景,将填补动态区域。请看下面的图片,以得到一个想法:

Layout requirement Image

**在图像中,灰色区域是我想提请背景,彩色矩形代表不同宽度的图像和高度。**

  • “rowHeight”根据行内各个图像的最大高度而变化。

问题:

一)现在我想提请填充列表的背景区域的背景(见PIC的灰色区域)。我知道当前项目的宽度为&高度,但我不知道rowHeight是由布局决定的,图像之间的左右边距。

喜欢的东西:

bgRect:Rectangle = new rectangle (0, 0, (imgWidth + (LeftMargin/2) + (Right Margin/2)), rowHeight) 

二)如何/应该在哪里后台执行?如果我根据布局在项目渲染器中添加BG区域,布局将会重新进行布局。

回答

0

孩子应该添加在createChildren方法中。在updateDisplayList方法中应该绘制(绘制)背景。

+0

Hello ,谢谢你的回复。问题的症结在于,需要根据不同分辨率的图像与不同行高对齐的布局信息创建背景矩形。我需要根据上一行图像的宽度和高度以及它旁边的一个图像来计算当前背景矩形的边界....我如何从itemRenderer中访问此布局相关信息? – 2014-09-16 06:41:37

0

您可以通过itemrenderer工厂将数据传递给您的itemrenderer。参见 - Flex - Sending a parameter to a custom ItemRenderer?

var productRenderer:ClassFactory = new ClassFactory(ProductRenderer); productRenderer.properties = {showProductImage:true}; myList.itemRenderer = productRenderer;

+0

你好,谢谢你的回复。请参阅我对的评论,这不是将参数发送到itemRenderer,而是从itemRenderer中访问布局信息。谢谢。 – 2014-09-16 06:45:14