親スプライトの幅に問題があります。親と子の 2 つのスプライトを作成します。
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);
スプライトにスプライトを追加すると、child.x = 20 であっても、parent.width は 100 になります。height と 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」ハックなしで子によってサイズ変更された親の幅を取得するにはどうすればよいですか?