Написал класс, который при запросе размеров спрайта будет выдавать фиксированные значения. Присвоил данный класс объекту sprite2, тем не менее, sprite1 по какой-то причине изменяет свою высоту до реальной высоты sprite2.

Код AS3:
package
{
import flash.display.Sprite;
public class UnresizableSprite extends Sprite
{
private var _width: Number;
private var _height: Number;
public function UnresizableSprite(width: Number, height: Number): void
{
_width = width;
_height = height;
}
public override function get width(): Number
{
return _width;
}
public override function get height(): Number
{
return _height;
}
}
}
Каким образом спрайт узнает размеры своих child?
Добавлено через 2 часа 53 минуты
У моей задачи есть 2 пути решения:
I.
1) Уточнить как Sprite определяют размеры child.
2) Подделать значения размеров при помощи расширения класса Sprite.
3) Присвоить новый класс sprite2.
Таким образом фактический размер sprite2 будет соответствовать данным на нем, а parent будет считать, что sprite2 меньше.
II.
Так как box (sprite0) реагирует на свойство height sprite1, то:
1) Уточнить как происходит изменение размеров Sprite из-за child.
2) При изменении размеров проверить, чтобы они не были вызваны sprite2.
3) Подделать значения размеров.
4) Присвоить новый класс sprite1.
Таким образом фактический размер sprite1 будет соответствовать данным на нем, но:
* В случае изменения размеров, вызванных sprite2 - parent (box (sprite0)) будет получать подделанное значение и не будет добавлять скролл. Данные, выходящие за ограничения размеров будут спрятаны при помощи mask или scrollRect непосредственно в sprite2.
* В случае изменения размеров, вызванных не sprite2, а другими child - box получит реальные размеры и будет добавлять скролл.
Второй способ уже реализован, так как уже известно, как box (sprite0) определяет размеры child, и подделать эти значения можно.

Код AS3:
package
{
import flash.display.Sprite;
import flash.display.DisplayObject;
public class UnresizableSprite extends Sprite
{
private var _width: Number;
private var _height: Number;
private var _ignoreList: Array;
public function UnresizableSprite(width: Number, height: Number): void
{
_width = width;
_height = height;
}
public function set ingoreList(ignoreList: Array): void
{
_ignoreList = ignoreList;
}
override public function get width(): Number
{
return _width;
}
override public function get height(): Number
{
return _height;
}
override public function addChild(obj: DisplayObject): DisplayObject
{
if (!isIgnored(obj.name))
{
if (obj.x + obj.width > _width)
{
_width = obj.x + obj.width;
}
if (obj.y + obj.height > _height)
{
_height = obj.y + obj.height;
}
}
return (super.addChild(obj));
}
private function isIgnored(name: String): Boolean
{
if (!_ignoreList)
return false;
var i: uint;
var len: uint = _ignoreList.length;
for (i = 0; i <= len - 1; i++)
if (_ignoreList[i] == name)
return true;
return false;
}
}
}
Мне более импонирует первое решение - оно более логично, но, увы, пока не могу найти ответ на свой вопрос -
как стандартный класс Sprite определяет размеры своих child?