呼び出し元のコンポーネントが幅と高さを明示的に設定していないのに、unscaledWidth と unscaledHeight が 0 にトレースされるのはなぜですか? (呼び出しコンポーネントが幅と高さを設定する場合、それらは設定された値にトレースされます。) measure() は最小の幅と高さを強制するべきではありませんか?
package {
import flash.display.Graphics;
import mx.core.UIComponent;
public class ToolBar extends UIComponent {
public function ToolBar() {
super();
}
override protected function createChildren():void {
super.createChildren();
}
override protected function measure():void {
super.measure();
measuredHeight = 400;
measuredWidth = 75;
measuredMinHeight = 400;
measuredMinWidth = 75;
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth,unscaledHeight);
var g:Graphics = graphics;
g.clear();
g.beginFill(0xfff00f);
g.drawRect(0,0,unscaledWidth,unscaledHeight);
g.endFill();
trace(unscaledWidth + " " + unscaledHeight);
}
}
}
詳細: .as ファイルから呼び出されると、プロパティは 0 にトレースされます。.mxml ファイルから呼び出すと、正常に表示されます。
コードの呼び出し (.as と .mxml の両方から - 0,0 を示し、mxml は 400,75 を示します):
override protected function createChildren():void {
super.createChildren();
if (!toolBar) {
toolBar = new ToolBar();
addChild(toolBar);
}
}