2008-11-03 39 views
2

我写了一个简单的日历控件,以便选择单日,周,月等。简单性来自于我自己没有真正做过任何绘画的事实,而是选择创建一堆盒子和标签作为日历的日期单元格。我可以暂停绘图以在Flex中执行多个连续更新吗?

当选择日期或日期范围时,我需要突出显示该范围。这很容易通过迭代单元格和切换它们的样式来完成。 [编辑::]但是,这似乎会导致一个延迟,在这期间,单元格首先被绘制,就好像样式名称是空白的,然后用正确的样式重新绘制,尽管事实上我从未明确地将样式设置为null - 我在“CalendarCell”和“CalendarCellSelected”之间交替。

如果这是Windows窗体,我会调用父容器上的SuspendLayout,以确保控件在完成更新后才重新绘制。我期望知道的是Flex是否存在类似的解决方案。我想避免画整个日历“手动”,可以这么说,如果这是可能的话。

编辑:改变了问题描述,以更准确地反映我所看到的。

回答

0

您的日历控件是否为UIComponent?它是否使用像commitProperties(),updateDisplayList()等标准无效方法?

你可能想要做的是保留一个私有数组,它们的样式会改变,但是在你的commitProperties()覆盖中做实际的样式切换。我只是不确定setStyle()是否触发validateNow(),因为闪烁有点令人惊讶。

+0

它扩展了VBox,所以是的。这并不是真正的闪烁,而是一个明显的延迟。我应该澄清一点。 – Rytmis 2008-11-06 16:57:44

1

你使用callLater()吗?

如果您使用callLater(),它可能会提取视觉效果,因为它会批量更改,直到需要绘制框架,或者使用validateNow()或类似方法强制绘制框架。你的情况可能够了。

+0

这是一个非常简单的解决方案,通常有效,但有时可能不足以完全解决问题。但这正是我为了消除我的一些项目中的UI闪烁而做的,并且足以满足我的需求。 – hasseg 2008-11-05 12:23:52

相关问题