我有一個精靈,我做了一些自定義繪圖,但我希望容器知道正確放置精靈的位置。要做到這一點,容器需要知道精靈有多大。 UIComponents經歷一個測量階段,但精靈不會。我如何計算精靈的大小?如何計算精靈的大小?
編輯:我正在做Event.ENTER_FRAME中的繪圖,它是動畫的,所以我不能提前告訴它會有多大。 UIComponent有一個度量函數,我想創建類似的東西。
我有一個精靈,我做了一些自定義繪圖,但我希望容器知道正確放置精靈的位置。要做到這一點,容器需要知道精靈有多大。 UIComponents經歷一個測量階段,但精靈不會。我如何計算精靈的大小?如何計算精靈的大小?
編輯:我正在做Event.ENTER_FRAME中的繪圖,它是動畫的,所以我不能提前告訴它會有多大。 UIComponent有一個度量函數,我想創建類似的東西。
準確的答案,據我所知,你不能提前告訴,你必須真正畫出精靈來決定它的大小。
精靈採用您在其中繪製的大小。它沒有任何大小,直到你繪製了一些東西。如果你的應用程序允許你可以先畫一個邊框(可能是矩形),然後測量精靈。但以後不要在國外畫畫。
看看這裏 - 我希望這回答了你的問題:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
private var s:Sprite;
private var w:UIComponent;
override protected function createChildren():void
{
super.createChildren();
if (!s)
s = getSprite();
w = new UIComponent();
trace("The sprite measures " + s.width + " by " + s.height + ".");
w.addChild(s);
box.addChild(w);
}
private function getSprite():Sprite
{
var s:Sprite = new Sprite();
s.graphics.lineStyle(1, 0xFFFFFF);
s.graphics.beginFill(0xFFFFFF, 1);
s.graphics.drawRect(0, 0, Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000));
s.graphics.endFill();
return s;
}
]]>
</mx:Script>
<mx:Box id="box" backgroundColor="#FFFFFF" />
</mx:Application>
如果你運行它,跟蹤語句應顯示所繪製的雪碧,這是隨機生成的高度和寬度。換句話說,只需查詢其高度和寬度屬性即可獲取精靈的高度和寬度。
如果您需要根據Sprite寬度和高度來佈局其他一些組件,但在實際繪製它之前,可以在一個flash.display.Shape對象上繪圖,將此大小用作參考,然後將該形狀在雪碧。
此外,根據您正在繪製的內容,您可能可以使用數學預先計算最終大小。
即,如果你正在繪製一個圓,你可以使用Math來計算出最終的高度/寬度。
邁克
只要記住,寬度不考慮其中的DisplayObject的圖形,所以,如果你在X負繪圖或y,你需要使用的getBounds(),以確保你可以正確定位它。 – grapefrukt 2009-01-09 10:29:40