2009-01-08 79 views
0

我有一個精靈,我做了一些自定義繪圖,但我希望容器知道正確放置精靈的位置。要做到這一點,容器需要知道精靈有多大。 UIComponents經歷一個測量階段,但精靈不會。我如何計算精靈的大小?如何計算精靈的大小?

編輯:我正在做Event.ENTER_FRAME中的繪圖,它是動畫的,所以我不能提前告訴它會有多大。 UIComponent有一個度量函數,我想創建類似的東西。

回答

2

準確的答案,據我所知,你不能提前告訴,你必須真正畫出精靈來決定它的大小。

1

精靈採用您在其中繪製的大小。它沒有任何大小,直到你繪製了一些東西。如果你的應用程序允許你可以先畫一個邊框(可能是矩形),然後測量精靈。但以後不要在國外畫畫。

0

看看這裏 - 我希望這回答了你的問題:

<?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> 

如果你運行它,跟蹤語句應顯示所繪製的雪碧,這是隨機生成的高度和寬度。換句話說,只需查詢其高度和寬度屬性即可獲取精靈的高度和寬度。

+1

只要記住,寬度不考慮其中的DisplayObject的圖形,所以,如果你在X負繪圖或y,你需要使用的getBounds(),以確保你可以正確定位它。 – grapefrukt 2009-01-09 10:29:40

0

如果您需要根據Sprite寬度和高度來佈局其他一些組件,但在實際繪製它之前,可以在一個flash.display.Shape對象上繪圖,將此大小用作參考,然後將該形狀在雪碧。

1

此外,根據您正在繪製的內容,您可能可以使用數學預先計算最終大小。

即,如果你正在繪製一個圓,你可以使用Math來計算出最終的高度/寬度。

邁克