我做了大量的研究并阅读了Adobe Live Docs,直到我的眼睛流血试图弄清楚这一点。
我在 ActionScript 中构建一个复合自定义组件,并希望子控件水平布局。通过将它们HGroup
添加到组件中并将 HGroup 添加到组件中,这可以正常工作,问题来自基于百分比的大小调整。
我需要_horizontalGroup:HGroup
根据容器的大小自行调整大小。
单步执行代码显示每个 UIComponent 的父属性是...
- _horizontalGroup.parent = ReportGridSelector
- ReportGridSelector.parent = grpControls
如果 grpControls 有明确的大小,那么 ReportGridSelector 不应该也有它的大小吗?
自定义组件是这样实现的...
注意:ReportControl 扩展 UIComponent 并且不包含大小调整逻辑
public class ReportGridSelector extends ReportControl{
/*other display objects*/
private var _horizontalGroup:HGroup;
public function ReportGridSelector(){
super();
percentHeight = 100;
percentWidth = 100;
}
override protected function createChildren():void{
super.createChildren();
if(!_horizontalGroup){
_horizontalGroup = new HGroup();
//I WANT SIZE BY PERCENTAGE, BUT THIS DOESN'T WORK
_horizontalGroup.percentWidth = 100;
_horizontalGroup.percentHeight = 100;
//EXPLICITLY SETTING THEM WORKS, BUT IS STATIC :-(
//_horizontalGroup.width = 200;
//_horizontalGroup.height = 200;
addChild(_horizontalGroup);
}
}
}
使用 MXML 代码
<?xml version="1.0" encoding="utf-8"?>
<s:VGroup id="grpControls" width="200" height="200">
<ReportControls:ReportGridSelector width="100%" height="100%"/>
</s:VGroup>
如果我明确定义_horizontalGroup
'swidth
和height
属性,一切都显示正常。如果我尝试_horizontalGroup.percentWidth
or percentHeight
,所有控件都会被压缩在一起。
关于发生了什么的任何想法?