我正在使用此函數,它是根據Plastic Sturgeon(http://plasticsturgeon.com/2010/09/as3-get-visible-bounds-of-transparent-display-object /)來獲取顯示對象的可見邊界。AS3顯示對象的可見邊界偏移不一致
public static function getVisibleBounds(source:DisplayObject):Rectangle
{
var matrix:Matrix = source.transform.concatenatedMatrix;
var data:BitmapData = new BitmapData(1000, 1000,true,0x00000000);
data.draw(source, matrix);
var bounds:Rectangle = data.getColorBoundsRect(0xFFFFFFFF,0x000000,false);
data.dispose();
return bounds;
}
然而,邊界從物體的偏移,這取決於階段大小。它適用於默認的舞臺尺寸(550px×400px),但是當任何一個尺寸增加時,它會向與該尺寸相反的方向移動(當x增加時,它向左偏移物體,並且當y增加時,它從物體向下偏移。)它並不一致。偏移量(舞臺尺寸)是非線性的,因爲對於一定範圍的舞臺尺寸它是0,那麼對於大於該範圍的舞臺尺寸,它隨着舞臺尺寸快速上升。偏移也是不同的,這取決於我改變了舞臺尺寸,例如,如果我分階段地從400px變爲1000px,在兩者之間測試影片,則邊界的偏移量不同,如果我一次從400px變爲1000px,或者不在中間階段測試影片。有時偏移只會隨着一個維度而變化,而另一維度則不會做任何事情。此外,發佈的文件與測試不同。我嘗試將該函數放置在與顯示對象相同的文件中,而不是放在外部文件中,但這仍然不可靠。我想知道是否有一些修正可以可靠地給我顯示對象的實際可見邊界,而不管舞臺大小和所有其他的東西。
我的電腦運行Windows Vista Home Premium 32位,我使用的是Adobe Flash Professional CS5.5。
謝謝!這工作。 –