Flex 调整 Canvas 的大小在哪里放置这样的代码? (内图)

Posted

技术标签:

【中文标题】Flex 调整 Canvas 的大小在哪里放置这样的代码? (内图)【英文标题】:Flex resizing Canvas where to put such code ? (diagram inside) 【发布时间】:2010-10-27 22:20:45 【问题描述】:

我有两个 Canvas A 和 B,A 是 B 的孩子。 可以通过一些用户操作来调整 A 的大小,例如将一些 UI 组件添加到其基础。 A 由另一个父画布 B 界定,如果其子 A 变得太大,则该画布 B 应显示 scolling 句柄。

我希望 A 的宽度和高度与 B 相同(或非常接近),而 A 的计算宽度和高度小于 B。

如果 A 的 w 或 h 大于 B 的 w 或 h,则 A 应该增长并且 B 将显示滚动。 我希望它有点清楚。

我的问题是我在哪里以及如何做这样的逻辑?

canvas diagram http://www.picimg.com/uploads/18cd2277adde7d50da2bc708075f4fac.png

【问题讨论】:

【参考方案1】:

Canvas 继承的 UIComponent 类具有 minHeight 和 minWidth 属性。您可以将 A 的 minHeight/Width 绑定到 B 的宽度和高度,因此每当调整 B 的大小时,A 的最小尺寸也会发生变化。还支持绑定到表达式(参见下面的示例)。当 A 变得太大而无法一次显示时, B 将自动显示滚动条,您只需要提供固定的高度和宽度(或其他一些尺寸限制)。添加子项后,A 也会自动调整大小。

<mx:Canvas id="B"  >
    <mx:Canvas id="A" minHeight="B.height-20" minWidth="B.width-20">
        <!-- your content widgets -->
    </mx:Canvas>
</mx:Canvas>

【讨论】:

【参考方案2】:

您只需将 B 上的滚动策略设置为自动。这样,如果 A get 太大,B 就会有滚动条。这应该在 MXML 中完成。

<mx:Canvas name="B" width=100 height=100 scrollPolicy="auto">
    <mx:Canvas name="A" width=90 height=90>
        ...
    </mx:Canvas>
</mx:Canvas>

【讨论】:

滚动策略默认为自动。

以上是关于Flex 调整 Canvas 的大小在哪里放置这样的代码? (内图)的主要内容,如果未能解决你的问题,请参考以下文章

如何自动调整图像大小以适合“flex-box”容器?

文本正在调整 flexbox 子项的大小而不是换行(使用 flex-grow)[重复]

关于Canvas Rect Transform 设置问题?

调整输入表单的大小

HTML5 画布:图像大小调整

在 flex3 中调整 TabNavigator 中的内容大小