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

2024-01-02

我正在尝试使用 Flex 组件框架创建自定义 Flex 组件:

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

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

MXML:

文本输入宽度=“100%”

or

运行时的动作脚本:

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 容器中,则无需执行任何特殊操作即可使百分比大小正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flex - 自定义组件 - 百分比宽度/高度 的相关文章

  • AS3 中的 Flash 翻页卷曲效果

    我正在开发一个项目 需要使用 Flash 开发翻页 卷曲 效果 如下例所示 http www actionscript org showMovie php id 459http www actionscript org showMovie
  • 如何通过 Angular 6 中的服务将对象发送到不相关的组件?

    所以我是 Angular 的新手 我正在尝试使用服务将对象从组件 1 发送到组件 2 当我将结果记录到 component2 中的控制台时 它没有给我对象的更新值 这可能是因为服务在第二个组件中重新初始化 你能帮忙解决这个问题吗 这是我的代
  • 需要澄清应用程序域

    我需要对这个主题进行一些澄清 因为我刚刚遇到将 swf 加载到重用加载器对象中的问题 假设我有 3 个 SWF 主文件 swfchildA swfchildB swf Main swf 中有一个可重用的加载程序对象 myloader loa
  • ActionScript 3 中的圆形滑块

    我希望在 ActionScript 中添加一个圆形滑块 非常类似于这一页 http interface eyecon ro demos drag vr html shows 它最终会改变对象的色调 返回 CMY 值 但如果它只是吐出程度 我
  • 调用控制器 Post 方法时遇到问题

    这是我的方法 AcceptVerbs HttpVerbs Post public void SaveImage FormCollection formValues byte contents Convert FromBase64String
  • 如何通过使用内置的 Date 类来节省时间?

    这个问题的目的是使用内置的 Date 类收集日期 时间计算的解决方案 而不是编写冗长的复杂函数 我会自己写一些答案 如果有人想出一些非常聪明的东西 我会接受答案 但这主要是作为解决方案的集合 因为我经常看到处理日期的代码过于复杂 请记住这是
  • 从另一个域加载外部图像

    是否可以从另一个域加载图像 jpg png gif 并操作像素 我想当下载 复制图像时它就在我的域中 使用加载器并将内容添加到图像组件时 我在调试器中收到错误 我想这里有一些跨域策略在起作用 但在继续之前我需要更确定它是如何工作的 我想 如
  • Flex 字典字面量

    在 Flex 中工作 我需要用相当复杂的结构填充字典 基于本文档页面 http livedocs adobe com flex 3 html help html content 10 Lists of data 4 html我尝试通过以下语
  • Actionscript 对象的属性数量

    如何获取通用 Actionscript 对象中的属性数量 如数组长度 您必须循环所有元素才能对它们进行计数 function objectLength myObject Object int var cnt int 0 for var s
  • 在类之间调度事件

    我有一个自定义事件类 public class FFTDrawEvent extends Event public static const DRAW EVENT String drawEvent private var param Arr
  • AS3 [Event(name="", type="")],有什么意义?

    我使用 FlashDevelop3 R2 和 Flex 3 3 SDK 进行开发 在很多情况下我必须使用嵌入元数据标签 如下所示 Embed source path to file private var Asset Class 我很好地理
  • 使用jquery调用AS3外部接口

    我正在使用ExternalInterface 调用嵌入在html 页面中的Flash 应用程序 以下代码工作正常 我正在使用按钮进行测试 document ready function button click function var a
  • 使用ExternalInterface和IE从JavaScript获取Flash中的当前URL

    我正在尝试获取 Flash 播放器当前所在的 URL 不是 swf 文件的 URL 而是浏览器指向的 URL 到目前为止我已经使用过 var st String ExternalInterface call window location
  • 我们可以在 Actionscript 中将编译后的 Haxe swf 的 SWC 用作普通库吗?

    我们可以在 Actionscript 中将编译后的 Haxe swf 的 SWC 用作普通库吗 我有一个从haxe代码编译的swf 我可以尝试将它编译成其他SWC 我想将它用作AS3中的lib 是否可以 如果是的话怎么办 是的 可以 性能提
  • 如何从公共函数返回变量

    我试图摆脱在主时间线上使用代码 但我很难理解 as 文件和 fla 文件如何交互 例如 我试图弄清楚如何将变量从主时间线传递到公共函数 对该变量执行一些操作并将其传递回主时间线 我在框架上有一个输入文本框和一个带有侦听器的简单按钮 我希望能
  • AIR - 按比例调整本机窗口大小

    我的应用程序启动时舞台尺寸为 1000 x 500 长宽比为 2 1 本机窗口具有系统镶边 它总是会高一些像素 怎么可能只允许本机窗口按比例调整大小以始终保持舞台的 2 1 宽高比 以下代码无法按我的预期工作 package Imports
  • Actionscript 3 中的外部配置文件

    我需要能够将外部配置文件加载到我的 Flex 应用程序中 我读到 只要将 mimeType 设置为 application octet stream 就可以使用嵌入 package learning import org flixel pu
  • (简单)Flex 3 应用程序需要什么版本的 Flash 播放器?

    Flex 3 应用程序需要什么版本的 Flash 播放器 要求似乎是FLEX开发环境中的HTML WRAPPER ACTIONSCRIPT编译器设置 我可以在那里选择什么来最大程度地兼容旧的 Flash 播放器 v8 播放器可以工作吗 Fl
  • Flex:监听文本区域中链接上的“悬停”

    我试图找出链接何时 悬停在 显示 html 文本的文本区域中 我想知道监听光标更改类型的事件是否可能是这样 我在文档中找不到任何内容 有谁知道我可以在这里收听什么活动吗 Thanks 这是一个非常有趣的问题 根据凯的建议 我想到了一种返回A
  • 如何在 CSS 中将 RadioButton 图标样式设置为无(在 Flex 3 中)?

    您可以通过在 CSS 中设置以下值来在 Flex 中设置 RadioButton 的外观 upSkin Embed overSkin Embed ownSkin Embed disabledSkin Embed selectedUpSkin

随机推荐