Jack,
Yes, that indeed did the trick!
In my solution, I compare the Erase layer rect() to the Bitmap rect() and calculate/adjust the offsets accordingly. I then do this calculation on the item's TransformEvent.SELECT event, and reset the manualBoundsOffset at that point.
private function adjustSelectionBox(e:TransformEvent):void
{
// get erase layer bounds
var eraseRect:Rectangle = _eraseLayer.getRect(_transformItem);
// if erase layer "exists"
if (eraseRect.width != 0 && eraseRect.height != 0)
{
// get image to use for sizing the selection box
var imageRect:Rectangle = _bitmap.getRect(_transformItem);
// if the erase layer goes "outside" the bitmap bounds, update deltas
if (eraseRect.x < imageRect.x)
{
_deltaX = Math.abs(imageRect.x + eraseRect.x);
}
if (eraseRect.y < imageRect.y)
{
_deltaY = Math.abs(imageRect.y + eraseRect.y);
}
if ((eraseRect.x + eraseRect.width) > (imageRect.x + imageRect.width))
{
_deltaW = (eraseRect.x + eraseRect.width) - (imageRect.x + imageRect.width);
}
if ((eraseRect.y + eraseRect.height) > (imageRect.y + imageRect.height))
{
_deltaH = (eraseRect.y + eraseRect.height) - (imageRect.y + imageRect.height);
}
}
// set new selection box
TransformItem(_transformMngr.getItem(_transformItem)).manualBoundsOffset = new Rectangle(0, 0, -(_deltaW + _deltaX), -(_deltaH + _deltaY));
_transformMngr.updateSelection();
}
Thanks again!
-Jarrod