我有两列:左边是一个包含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”不是一个选项。也许有更好的滚动方式?
感谢。
答案 0 :(得分:0)
嗯,就像解决方案一样糟糕,我最终不得不实施黑客来解决我的问题。我补充说:
rightColumn.horizontalScrollPosition = rightColumn.horizontalScrollPosition + 1;
rightColumn.horizontalScrollPosition = rightColumn.horizontalScrollPosition - 1;
为了强制画布重绘,它可以完美地工作,没有明显的性能下降和没有急动。现在确定是否有更好的方法来强制画布重绘。