2013-04-13 29 views
1

我有以下情况。如何在Flex中添加滚动条到UIComponent中

<mx:Canvas id="canvas" height="100%" width="100%"> 
<mx:UIComponent id="chart" width="100%" height="100%"/> 
</mx:Canvas> 

现在有一个SVGDocument组件被作为子组件添加到上面的UIComponent中。它基本上是svg图像。我已经为此实现了缩放功能。因此,在鼠标向上滚动并向下滚动时,SVGDocument元素分别放大和缩小。我想将滚动条添加到UIComponent'图表',以便每当SVGDocument变得足够大时,滚动条就会出现。目前我没有找到任何方法来添加此。任何人都可以请建议?

回答

0

如果您不想手动管理滚动条,则应使用ScrollerGroup组件(用于spark)或某种Box用于mx。 不要忘记限制ScrollerBox大小以禁止它们扩展到其父边界之外。 如果您想要自定义滚动行为,您可以手动将GroupclipAndEnableScrolling属性设置为true并处理其viewport属性。

+0

感谢您的答案,但我使用flex 3.0,并没有在那里的滚动条。我试着用盒子,但仍然没有出现滚动条。看起来像UIComponent没有报告其父母的高度和宽度。 – genonymous

+0

您是否删除了'width =“100%”height =“100%”'?它强制'UIComponent'适合你的盒子。 – user1875642

1

您需要将UIComponent放置在(0,0)的Canvas上,并将其尺寸设置为Canvas以匹配SVG图像的宽度和高度。将Canvas包装在Box中,您将在需要时滚动条。这是显示或隐藏滚动条的Canvas大小。

<mx:Box width="100%" height="100%"> 
    <mx:Canvas id="canvas"><!-- set width & height to match SVG image --> 
    <mx:UIComponent id="chart" x="0" y="0"/> 
    </mx:Canvas> 
</mx:Box>