我有一个MovieClip
,我编译为SWC并导入Flash Builder。
MovieClip
有一个蒙面(可见)区域,以及一个被蒙版隐藏的不可见区域:
我将MC包装在UIMovieClip
中,以便我可以插入应用程序的MXML中:
<my:SomeMaskedControl bottom="0" />
在MXML中,我设置了属性bottom="0"
,我希望UIMovieClip
位于应用程序的底部。不幸的是,MC的隐形区域正在弄乱它:
我希望它更像这样:
我意识到我可以将bottom
属性更改为负值,但我认为这会弄乱应用程序的体系结构。有没有办法解决它,以便我仍然可以使用bottom="0"
?
答案 0 :(得分: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;
}
}