1

呼び出し元のコンポーネントが幅と高さを明示的に設定していないのに、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);
        }
    }
4

0 に答える 0