2013-05-22 18 views
0

我有父級精靈的寬度問題。我創建兩個精靈:家長和孩子Actionscript:父級的大小取決於孩子的寬度和座標

var parent:Sprite = new Sprite(); 
var child:Sprite = new Sprite(); 

addChild(parent); 
parent.addChild(child); 

child.x = 20; 
child.y = 20; 
child.graphics.beginFill(0xFF0000); 
child.graphics.drawRect(0, 0, 100, 100); 
trace("colorBox.graphics.beginFill(0xFF0000);"); 
trace("colorBox.graphics.drawRect(0, 0, 100, 100);"); 
trace("parent", parent.width, parent.height, parent.x, parent.y); 
trace("child", child.width, child.height, child.x, child.y); 

如果我加雪碧的雪碧,parent.width是100,即使child.x = 20。關於身高和y一樣。

但是,如果我改變這樣的代碼:

var parent:Sprite = new Sprite(); 
var child:Sprite = new Sprite(); 

parent.graphics.drawRect(0, 0, 0, 0); // the difference 

addChild(parent); 
parent.addChild(child); 

child.x = 20; 
child.y = 20; 
child.graphics.beginFill(0xFF0000); 
child.graphics.drawRect(0, 0, 100, 100); 
trace("colorBox.graphics.beginFill(0xFF0000);"); 
trace("colorBox.graphics.drawRect(0, 0, 100, 100);"); 
trace("parent", parent.width, parent.height, parent.x, parent.y); 
trace("child", child.width, child.height, child.x, child.y); 

父寬度變得等同於120

爲什麼會這樣呢?我怎樣才能得到父母的寬度由孩子調整沒有「parent.graphics.drawRect」黑客?

回答

1

Sprite的寬度不一定是從其原點(0,0)計算出來的。它是根據內容元素的邊界計算的,從內容的最左邊開始計算。由於子元素的最左點是20,所以從那裏計算寬度。將圖形添加到(0,0)時,寬度將從新的最左邊的點(0,0)計算得出。

有幾個方面與此有關的工作:

創建自己的寬度計算方法,返回根據孩子的寬度的偏移和寬度:

function myWidth():Number { 
    return child.x + child.width; 
} 

你已經什麼已經完成,並添加一個不可見的元素到父母的起源。

參考:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#width

+0

謝謝,克雷格!我們無法整天處理這個問題。 – mpMelnikov

相關問題