2
  • 我有一个MovieClip我编译到 SWC 并导入到 Flash Builder 的文件。

  • MovieClip一个蒙版(可见)区域和一个被蒙版隐藏的不可见区域:

    MC

  • 我将 MC 包装在 a 中UIMovieClip,以便可以插入应用程序的 MXML:

    <my:SomeMaskedControl bottom="0" />

  • 在我设置属性的 MXML 中bottom="0",我希望它UIMovieClip位于应用程序的底部。不幸的是,MC 的隐形区域搞砸了:

    应用

  • 我希望它更像这样:

    更好的应用

我意识到我可以将bottom属性更改为负值,但我认为这会破坏应用程序的体系结构。有没有办法修复它以便我仍然可以使用bottom="0"

4

1 回答 1

1

尝试使用 Colin Moock hack: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 回答