2010-03-05 137 views
2

我是新來的ActionScript,所以如果這是一個愚蠢的問題,請原諒我。因此,我創建了一個類,擴展了Sprite類,現在在構造函數中,我試圖設置從DisplayObject繼承的Sprite的寬度和高度屬性。但是,在設置this.width和this.height並打印值後,兩者都爲0。AS3類擴展Sprite

這是怎麼回事?當我查看livedoc時,我發現DisplayObject的寬度和高度都列爲公共屬性。我已經能夠直接實例化Sprite,並在實例化後設置寬度和高度,所以我不明白。

package { 
    import flash.display.*; 

    public class ScrollBar extends Sprite { 
     public function ScrollBar(width:Number, height:Number) { 
      trace(width + "x" + height); 
      this.width = width; 
      this.height = height; 
      trace(this.width + "x" + this.height);   
    } 
} 

輸出:

20x400 
0x0 
+0

我不確定'width:uint,height:uint'。當你將這些改爲':Number'時會發生什麼,因爲'this.width'的類型是Number。 – Pindatjuh 2010-03-05 14:09:01

+0

與Number相同的結果。你是對的,但屬性應該是Number。 – Steve 2010-03-05 14:11:05

回答

5

docs

寬度是基於所述顯示 對象的內容的 範圍來計算的。當設置寬度 屬性,scaleX屬性是 相應...調整除 TextField和Video對象,沒有內容(諸如 空的Sprite)的顯示 對象的寬度爲0,即使 如果您嘗試將寬度設置爲不同的 值。

你需要渲染一些東西作爲精靈的一部分來獲得一個有效的瓦特/小時。

+0

太棒了,謝謝。這讓我感到困惑。 – Steve 2010-03-05 14:25:06

+0

謝謝;這也幫助我今天! – JeffryHouser 2011-09-11 15:32:06