ActionScript中精灵的应用旋转的startDrag()的矩形范围

问题描述:

从我的主类我称之为创建一个精灵,并把它添加到舞台ActionScript中精灵的应用旋转的startDrag()的矩形范围

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; 
} 

如果正方形Sprite进行缩放,下面返回的矩形边界工作

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; 
} 
+0

这是什么defaultSwatchRect,它是什么意思? – jonathanasdf 2010-04-13 03:17:16

+0

哦,是的,这是混乱。抱歉。它与swatchObject相同(在这一点上)。 defaultSwatchRect是用于创建swatchObject的站点的传入参数。我编辑了我的文章,所以你可以希望看到我的意思 – TheDarkIn1978 2010-04-13 03:24:17

+0

编辑并没有真正帮助澄清什么defaultSwatchRect不... – jonathanasdf 2010-04-13 03:35:13

我的想法是,而不是使用复杂的三角函数,只是用swatchObject.getRect()得到swatchObject的边界矩形,然后创建一个基于stageBounds在那。它应该超过您的目的。

如果这不是你想要的,我可以帮你弄清楚数学。

对不起,我不能真正给你一个函数,直到我找出什么是defaultSwatchRect - 它的x和y在哪里以及它应该做什么。

另一件你可能想要记住的未来:数学函数(cos,sin)期望以弧度为单位的角度,而.rotation属性以度为单位,所以你必须在使用之前进行转换。

+0

荒谬!大声笑。这是令人难以置信的方式比我一直试图做的一整天更容易。太感谢了! – TheDarkIn1978 2010-04-13 03:40:03

+0

结果有时比你想象的要简单得多:) ,在其他情况下比较困难。 – jonathanasdf 2010-04-13 03:45:35