2014-03-24 83 views
0

我有一個類稱爲集裝箱延伸雪碧和手動添加設置寬度的能力和高度,以將scaleX和scaleY始終保持1Flash如何根據子元素計算DisplayObject的尺寸?

我已經把這樣的類變成一個精靈,發現精靈措施本身內部計算,實際上並沒有從getters獲得寬度/高度。

什麼是這個數學,我該如何擴展它來強制Sprite在考慮我的擴展寬度和高度的同時採取其內部措施?

回答

1

該算法位於getBoundary()函數中,該函數針對所有子元素和其自身圖形調用,以確定整個精靈顯示列表邊緣的座標。這就是爲什麼設置寬度而不進行縮放可能沒有用處。但是如果你仍然希望這樣做,首先創建包含設置寬度和高度信息的字段,這些信息將在container.widthcontainer.height賦值中更新,然後還覆蓋寬度和高度的getters,返回存儲的寬度和高度的最大值以及電話super.widthsuper.height

var storedWidth:Number=0; // to not have NaNs 
public override function get width():Number { 
    var w:Number=super.width; // get width from that math 
    if (storedWidth>w) w=storedWidth; // or any other logic, to operate these values 
    return w; 
} 

高度相同的方法。

+0

我確實使用NaN作爲storedWidth的佔位符。如果storedWidth是NaN,我使用super.width,否則使用storedWidth,即使它的值小於super.width。我將對getBoundary()進行一些研究。謝謝。 – Discipol