2010-05-11 47 views
1

我有兩列:左邊是包含mx:Tree的Canvas,右邊是包含Canvas(允許滾動)的Canvas的一些自定義Sprites左邊的樹節點。我做了正確的畫布可滾動(水平和垂直),我想垂直滾動也滾動左帆布,使樹節點與他們在右邊的表示排隊。當在Flex中手動滾動時重繪問題

滾動部分工作正常,當我嵌入wmode =「窗口」時,沒有問題。不幸的是,客戶需要動態HTML來重疊Flash,並且在使用wmode =「opaque」或「transparent」時,會出現問題。滾動仍然有效,但Flash似乎沒有適當地重繪任何Canvas。畫布變得不同步,並且工件經常保持在右側。

我趕在右列滾動事件,並更新左側欄滾動位置,像這樣:

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

刪除此事件監聽器允許右列正確繪製。

關於如何解決這個問題的任何建議?不幸的是,wmode =「window」不是一個選項。也許有更好的方法來滾動?

謝謝。

回答

0

好吧,就像解決方案的結果一樣糟糕,我最終不得不實施黑客來解決我的問題。我說:

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

,以迫使畫布重繪,它在性能上沒有明顯下降,沒有抽筋完美的作品。現在確定是否有更好的方法來強制畫布重繪。