私はこれを理解しようとして目が出血するまで、たくさんの調査を行い、 AdobeLiveDocsを読みました。
複合カスタムコンポーネントを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
ます。またはを試してみると、すべてのコントロールが一緒につぶれてしまいます。width
height
_horizontalGroup.percentWidth
percentHeight
何が起こっているのかについて何か考えはありますか?