из моего основного класса я звоню, чтобы создать спрайт и добавить его на сцену
private function addSwatch(evt:MouseEvent):void
{
if (stage.getObjectsUnderPoint(mousePoint()).length == 0)
{
var swatchSide:Number = 100;
var newSwatch:Sprite = new Swatch(0 - swatchSide/2, 0 - swatchSide/2, swatchSide, swatchSide);
newSwatch.x = mouseX;
newSwatch.y = mouseY;
addChild(newSwatch);
}
}
Я добавил спрайт-образец на сцену, который при перетаскивании содержится в заданных границах.
this.startDrag(false, swatchBounds());
...
private function swatchBounds():Rectangle
{
var stageBounds = new Rectangle (
0 - defaultSwatchRect.x,
0 - defaultSwatchRect.y,
stage.stageWidth - defaultSwatchRect.width,
stage.stageHeight - defaultSwatchRect.height
);
return stageBounds;
}
если квадратный спрайт масштабируется, следующая возвращаемая граница прямоугольника работает
private function swatchBounds():Rectangle
{
var stageBounds = new Rectangle (
0 - defaultSwatchRect.x * swatchObject.scaleX,
0 - defaultSwatchRect.y * swatchObject.scaleY,
stage.stageWidth - defaultSwatchRect.width * swatchObject.scaleX,
stage.stageHeight - defaultSwatchRect.height * swatchObject.scaleY
);
return stageBounds;
}
Теперь я пытаюсь включить вращение квадратных спрайтов в микс. математика, конечно, не моя удача, но я чувствую, что нахожусь на треке для записи. тем не менее, я просто не могу обернуть голову вокруг этого, чтобы понять это правильно
private function swatchBounds():Rectangle
{
var stageBounds = new Rectangle (
0 - defaultSwatchRect.x * swatchObject.scaleX * Math.cos(defaultSwatchRect.x * swatchObject.rotation),
0 - defaultSwatchRect.y * swatchObject.scaleY * Math.sin(defaultSwatchRect.y * swatchObject.rotation),
stage.stageWidth - defaultSwatchRect.width * swatchObject.scaleX * Math.cos(defaultSwatchRect.width * swatchObject.rotation),
stage.stageHeight - defaultSwatchRect.height * swatchObject.scaleY * Math.sin(defaultSwatchRect.height * swatchObject.rotation)
);
return stageBounds;
}