2010-04-13 9 views
0

내가 스프라이트를 만들 전화 내가 무대에 견본 스프라이트를 추가 한액션하여 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; 
} 

다음 반환 된 사각형의 경계는

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

+0

아, 그래, 혼란 스럽네. 죄송합니다. 이것은 swatchObject와 같습니다 (이 시점에서). defaultSwatchRect는 사이트에서 swatchObject를 만들기 위해 전달 된 매개 변수입니다. 나는 내 게시물을 편집 했으므로 희망을 가지고 무엇을 의미하는지 볼 수 있습니다. – TheDarkIn1978

+0

편집이 defaultSwatchRect의 기능을 명확히하는 데 도움이되지 않았습니다 ... – jonathanasdf

답변

1

내 생각 대신 복잡한 삼각를 사용하는 단지 swatchObject.getRect()를 사용 swatchObject의 경계 RECT를 가져온 다음을 기반으로 stageBounds을 만들 수 있다는 것입니다 그걸로. 그것은 당신의 목적을 위해 충분 이상이어야합니다.

이것이 원하는 것이 아니라면, 수학을 이해하도록 도와 줄 수 있습니다.

그리고 죄송 합니다만, defaultSwatchRect가 무엇인지 파악하기 전까지는 실제로 함수를 제공 할 수 없습니다. x와 y가 무엇이고 어떻게 해야하는지 알아야합니다.

수학 함수 (cos, sin)는 각도를 라디안으로 예상하지만 .rotation 속성은 각도로 표시되므로 사용하기 전에 변환해야합니다.

+0

우스운! 롤. 그 하루 종일 노력하고있는 것보다 믿을 수 없을만큼 쉬운 방법입니다. 대단히 감사합니다! – TheDarkIn1978

+0

결과는 때때로 생각보다 훨씬 더 간단합니다 :) 그리고 다른 경우에는 훨씬 더 세게. – jonathanasdf