2010-05-18 7 views
0

에 그려진 사각형 나는 회전 사각형 template는 캔버스입니다플렉스

var s:UIComponent = new UIComponent();  
s.graphics.lineStyle(1, 0x0000FF); 
s.graphics.drawRect(50, 50, 200, 200); 
s.rotation = 30; 
template.addChild(s); 

을 그리기 위해 다음과 같은 코드를 작성 돌립니다. 회전이 좋지만 문제는 위치가 올바른 위치에 있지 않다는 것입니다. 즉, 회전 후 (50, 50)에 있지 않다. 이 문제를 어떻게 해결할 수 있습니까?

미리 감사드립니다.

+0

몇 가지 대답을 수락하십시오. 각 질문에 대한 최상의 답 옆에있는 녹색 체크 표시를 클릭하십시오. –

답변

1

Flex에서 원점을 기준으로 한 기본 회전이 표시됩니다 (X, Y 좌표 50,50). 중심을 중심으로 회전하려고한다고 가정합니다 (최근에해야 할 일은). 회전 각에 따라 원점을 조정하여 배심원이 할 수있는 방법이 있습니다. 그런 다음이 회전 효과 :

import mx.effects.Rotate; 

var s:UIComponent = new UIComponent();  
var rotator:Rotate = new Rotate(s); 

s.graphics.lineStyle(1, 0x0000FF); 
s.graphics.drawRect(50, 50, 200, 200); 

rotator.angleFrom = 0; 
rotator.angleTo = 30; 
rotator.originX = s.width/2; 
rotator.originY = s.height/2; 
template.addChild(s); 
rotator.play(); 

가 지금은 다시 재생() 메소드 후 회전 된 객체의 폭과 높이를 설정하는 나에게 요구되는이 몇 가지 문제를 발견했습니다,하지만 내가 얻을 것 이외의 이상적인 회전 상황.

또 다른 단점은 효과가 있다는 것입니다. 즉, 시각적으로 개체를 회전시키는 것입니다. 나는 그것을 바로 잡을 때 다시 게시 할 것입니다. 객체가 회전하는 것을 보지 않으려면 다시 게시하십시오.

대답은 그냥 사용자가 표시되지 않습니다 너무 빨리 발생 플레이하기 전에 rotator.duration = 1을 추가하여 시간 입니다. 1은 1 밀리 초입니다. 0을 시도했지만 회전이 발생하지 않았습니다. 분명히 작동중인 효과를 보려면 밀리 초 단위의 값을 사용하여 해당 시간을 늘릴 수 있습니다.