Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在Flex中,如何在运行时获得无子女画布组件的尺寸?_Apache Flex_Layout_Canvas - Fatal编程技术网

Apache flex 在Flex中,如何在运行时获得无子女画布组件的尺寸?

Apache flex 在Flex中,如何在运行时获得无子女画布组件的尺寸?,apache-flex,layout,canvas,Apache Flex,Layout,Canvas,我的一个组件如下所示: <mx:Canvas id="grid" width="100%" height="100%"></mx:Canvas> 在creationComplete上,我加载了一些Sprite,我想根据画布的尺寸缩放和定位它们,以创建自定义网格布局,但当我访问“网格”的尺寸时,我得到了0和0。有没有办法在不指定绝对值的情况下获取尺寸?我现在无法检查,但您可以访问测量的高度和测量的宽度吗?我的理解是,除非画布包含一个或多个DisplayObject子对

我的一个组件如下所示:

<mx:Canvas id="grid" width="100%" height="100%"></mx:Canvas>


在creationComplete上,我加载了一些Sprite,我想根据画布的尺寸缩放和定位它们,以创建自定义网格布局,但当我访问“网格”的尺寸时,我得到了0和0。有没有办法在不指定绝对值的情况下获取尺寸?

我现在无法检查,但您可以访问测量的高度和测量的宽度吗?

我的理解是,除非画布包含一个或多个DisplayObject子对象,否则它将始终将其宽度和高度属性报告为0,不管您对其应用的大小百分比是多少


您总是可以将一个空的虚拟DisplayObject添加到画布中,但这并不十分优雅。根据您计划如何实施自定义网格,您可能需要重新考虑设计…

是否可能已创建但尚未显示(例如可见)?由于最终的大小和形状是派生出来的,所以直到实际需要绘制对象时才会发生。宽度和高度被记录为实际使用的值——甚至在它们发生变化时也会发生事件


最糟糕的情况是,尝试在画布调整大小事件中将其捕获。

您是否尝试将画布的宽度和高度绑定到其父级?如果它是100%,那么它将具有与其父对象相同的大小,并且您可以根据画布的父容器绑定或调整精灵(UIComponent)的大小。

当我访问维度时,这似乎并不重要。如果在其周围绘制边框,则会返回边框的宽度和高度(2x2)。不幸的是,其父对象报告的尺寸相同。如果父对象的尺寸为0,0,则调整为100%将产生0,0。你有可能发布你正在处理的整个MXML层次结构吗?我昨天尝试了这个方法:放入一些随机组件,测量画布,删除所有子对象。它仍然说高度和宽度是0。我必须说,这一切都很不直观。我希望它能像HTMLDOM一样工作。我在写作之前尝试过这个方法,它对我很有效。子组件必须测量自身,以便父画布报告w/h。在检查测量值之前,子组件是否有机会完全展开?