加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

actionscript-3 – Flex – 自定义组件 – 百分比宽度/高度

发布时间:2020-12-15 01:46:57 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Flex组件框架创建自定义Flex组件: http://www.adobe.com/livedocs/flex/3/html/help.html?content=ascomponents_advanced_3.html. 所有好的组件都允许您使用百分比值来定义它们的尺寸: MXML: TextInput width =“100%” 要么 运行时的Acti
我正在尝试使用Flex组件框架创建自定义Flex组件:

http://www.adobe.com/livedocs/flex/3/html/help.html?content=ascomponents_advanced_3.html.

所有好的组件都允许您使用百分比值来定义它们的尺寸:

MXML:

TextInput width =“100%”

要么

运行时的Actionscript:

textinp.percentWidth = 100;

我的问题是如何在自定义组件的measure()方法中实现百分比宽度/高度?更具体地说,这些百分比在某个阶段转换为像素值,这是如何完成的?

解决方法

Flex布局的工作方式是让每个组件将其子项布局为父项指定的大小. “Children”确实包括通常的孩子 – getChildren(),numChildren – 以及组成边框,句柄等的组件,这些组件被称为“chrome”并且是getRawChildren()的一部分.

Flex框架现在对所有组件(实际上是显示树的一部分)执行两个循环.第一个是自下而上(首先是最深的嵌套元素)并调用measure()方法.如果组件可以拥有所需的空间,则应该计算组件将占用多少空间(宽度/高度),没有限制(想想:滚动条)并将其放入measuredWidth和measuredHeight属性中.其次,它计算了它想要的绝对最小空间,放入measuredMinHeight / measuredMinWidth.为了计算这一点,使用getExplicitOrMeasuredHeight()/ Width()询问边框粗细,铬和常规子项的大小,并将它们相加.这就是为什么它是深度优先的原因.

第二个循环是进行实际布局.这从树的顶部开始,并调用updateDisplayList,x / y参数告诉组件它实际具有多少大小.根据这些信息,该组件将告诉其直接的孩子他们应该在哪里(相对于他们的父母)以及他们应该有多大 – child.move(x,y)和child.setActualSize(w,h)

因此,它实际上是将相对大小考虑在内的父容器.您的组件声明它是理想的(最小大小以便可以显示所有内容)和measure()中的最小大小,并且必须处理它在updateDisplayList()中获得的任何内容.父组件获取它具有的可用空间,确保每个组件获得它的最小大小,然后将其余组件分配给所有组件.在此阶段,它将查看其子项的percentWidth / Height属性.

因此,如果您想将组件放在像HBox这样的标准Flex容器中,则无需对百分比大小进行任何特殊操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读