【问题标题】:Force containers to do layout after children are rotated?孩子旋转后强制容器进行布局?
【发布时间】:2009-08-06 00:44:08
【问题描述】:

我的问题很简单:Flex 容器基于未转换的子元素进行布局,因此旋转的子元素被定位为好像没有旋转,但随后它们围绕该位置的左上角旋转。我附上了一张图片来说明我的意思。

有人知道如何解决这个问题吗?我可以将组件包装在什么东西中吗?还是我必须求助于自定义组件或固定布局?

【问题讨论】:

  • 你已经在旋转后尝试过 invalidateDisplayList() 吗?
  • 是的,问题不在于时间,而是布局类忽略了组件的实际边界,仅生效 getExplicitOrMeasuredWidth/Height :(

标签: apache-flex layout


【解决方案1】:

如果容器不处理布局代码中的旋转变换,那么不幸的是,您只能自己添加此功能。雪上加霜的是,Flex 3 及更低版本并没有真正很好地分离布局和逻辑,因此您通常最终会得到解决非常具体问题的组件,而使用实现布局界面的单独布局类可能会更好地解决这些问题。这些组件可以很快变大,并且通常还会使组件设计变得脆弱,因为有太多的子类化正在进行。

这个问题已经在 Flex 4(即将发布)中得到解决,但我不能保证。理论上这是个好主意,但实际上我没有时间深入了解 Adob​​e 对该设计的实现。

长话短说:您可能搞砸了,必须自己实现此功能。幸运的是,它通常很容易破解。不幸的是,实现一个好的非脆弱解决方案通常非常困难,因为它通常需要使用子类和对超类内部的深入了解,这可能需要也可能不需要monkey patching.

【讨论】:

  • 我以为是这样,只是希望我错过了文档/源代码中的某些内容...我将发布一个愚蠢简单的 IContainer 实现,它支持(一个组件的)旋转下周左右,因为我需要尽快构建它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多