手动滚动Flex时重绘问题

时间:2010-05-11 15:05:00

标签: flex adobe

我有两列:左边是一个包含mx:Tree的Canvas,右边是一个包含Canvas(允许滚动)的Canvas,其中包含左侧树节点的一些自定义Sprite。我做了正确的Canvas可滚动(水平和垂直),我希望垂直滚动也滚动左画布,以便树节点与右边的表示对齐。

滚动部分工作正常,当我嵌入wmode =“window”时没有问题。不幸的是,客户需要动态HTML有时与Flash重叠,当使用wmode =“opaque”或“transparent”时,存在问题。滚动仍然可以工作,但Flash似乎没有适当地重绘Canvas。画布变得不同步,文物经常保留在右侧。

我在右列上捕获了一个滚动事件并更新了左列上的滚动位置,如下所示:

        public function onTimelineScroll(scrollEvent:ScrollEvent):void {
            leftColumn.verticalScrollPosition = rightColumn.verticalScrollPosition; 
        }

删除此事件侦听器允许右列正确绘制。

有关如何解决此问题的任何建议?不幸的是,wmode =“window”不是一个选项。也许有更好的滚动方式?

感谢。

1 个答案:

答案 0 :(得分:0)

嗯,就像解决方案一样糟糕,我最终不得不实施黑客来解决我的问题。我补充说:

rightColumn.horizontalScrollPosition = rightColumn.horizontalScrollPosition + 1;
rightColumn.horizontalScrollPosition = rightColumn.horizontalScrollPosition - 1;

为了强制画布重绘,它可以完美地工作,没有明显的性能下降和没有急动。现在确定是否有更好的方法来强制画布重绘。