2
  • MovieClipSWC にコンパイルして Flash Builder にインポートしたファイルがあります。

  • MovieClipは、マスクされた (表示されている) 領域と、マスクによって隠されている非表示の領域があります。

    MC

  • UIMovieClipアプリケーションの MXML に挿入できるように、MC を でラップしました。

    <my:SomeMaskedControl bottom="0" />

  • MXML で属性を設定し、アプリケーションの下部に配置しbottom="0"たいと考えました。UIMovieClip残念ながら、MC の見えない領域が台無しになっています。

    応用

  • 私はそれがもっと欲しかった:

    ベターアプリケーション

属性を負の値に変更するだけでよいことはわかっていbottomますが、これではアプリケーションのアーキテクチャが台無しになると思います。引き続き使用できるように修正する方法はありますbottom="0"か?

4

1 に答える 1

1

Colin Moock ハックを使用してみてください: http://www.moock.org/blog/archives/000292.html

public class SomeMaskedControl extends UIMovieClip
{
    protected var mc:MaskedMC;

    public function SomeMaskedControl()
    {
        super();

        mc = new MaskedMC();

        addChild(mc);
    }

    public function getVisibleHeight (o:DisplayObject):Number {
        var bitmapDataSize:int = 2000;
        var bounds:Rectangle;
        var bitmapData:BitmapData = new BitmapData(bitmapDataSize, bitmapDataSize, true, 0);
        bitmapData.draw(o);
        bounds = bitmapData.getColorBoundsRect( 0xFF000000, 0x00000000, false );
        bitmapData.dispose(); 
        return bounds.y + bounds.height;
    }

    override public function get height():Number
    {
        return getVisibleHeight( mc );
    }
}

しかし、私はこの方法が好きではありません。マスクを MovieClip として作成し、インスタンス名を設定できる場合、アプリケーションで mask.height を取得し、UIMovieClip の高さを置き換えることができます。

public class SomeMaskedControl extends UIMovieClip
{
    protected var mc:MaskedMC;

    public function SomeMaskedControl()
    {
        super();

        mc = new MaskedMC();

        addChild(mc);
    }

    override public function get height():Number
    {
        return mc.maskMC.height;
    }
}
于 2013-02-28T08:45:58.717 に答える