2010-04-13 38 views
0

從我的主類我稱之爲創建一個精靈,並把它添加到舞臺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

回答

1

我的想法是,而不是使用複雜的三角函數,只是用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