2010-01-17 6 views
0

Ive는 이와 같은 일부 코드를 실행했을 수 있습니다. 어디든 기억하지 못할거야. 내 무대에 2 개의 디스플레이 개체가 있습니다. 하나는 회전하고 다른 하나는 회전하는 대상에서 90도 위치합니다. 객체가 회전 할 때 다른 객체는 회전하는 객체에서 x 및 y 위치를 조정합니다 ..다른 객체 회전을 기반으로 display 객체 이동

이것이 의미가 없다면, 내가 무엇을하려고하는지 설명하겠습니다. 내 플래시 게임에 우주선이있어. 이 함선에는 좌우 날개에 2 개의 토렛이 있습니다. 배가 돌아서 자 토레는 날개에 남아 있어야합니다. 아무도 내가이 일을 어떻게하는지 알지 못한다.

답변

1

DisplayObjects가 중첩되지 않도록 유지하려면 삼각 함수를 사용하십시오.

회전 = 0에서 터렛 객체가 선박 중심의 오른쪽에 직접 거리 r 인 것으로 가정합니다.

private function degreesToRadians(degrees:Number):Number { 
    return degrees * Math.PI/180; 
} 

turret.x = shipCenter.x + r*Math.cos(degreesToRadians(ship.rotation)); 
turret.y = shipCenter.y + r*Math.sin(degreesToRadians(ship.rotation)); 

그러나, 디스플레이 객체를 적절한 변환 행렬을 사용하는 방법을 학습하거나 중첩하는 것은 궁극적으로 청소기 솔루션

+0

안녕하세요. 중첩되지 않은 것은 무엇을 의미합니까? 나는이 포탑을 배 클래스의 내부에서 호출한다. 그게 네가 중첩 된 것인가? 또는 무비 클립 내에서이 포탑을 내 우주선 위에 놓는 것을 의미합니까 (즉, 라이브러리에서 끌어서 놓습니다). 첫 번째 해결 방법 만 시도했습니다. – numerical25

+0

표시 목록의 의미에서 중첩되어 있습니다 - 다양한 배 부분의 그래픽 표현을 공유 DisplayObjectContainer 하위 클래스에 배치합니다. CS4에서 올바르게 수행하는 방법은 확실하지 않지만 표시 목록의 근본적인 기본 내용은 여기에서 설명합니다. http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_01.html – ZackBeNimble

3

왜 날개 안에 날개를 중첩하지 않습니까? 날개가 회전하면 날개 꼭대기에 남아있게됩니다.

+0

날개는 우주선 이미지의 일부입니다 이어질 것입니다. 그래서 나는 전체 우주선 이미지를 기반으로해야만 할 것입니다. – numerical25

+0

왜 그들을 주선의 자녀로 삼아서 부모와 관련된 변형 행렬을 가지고 있습니까? 그런 다음 부모가 회전 할 때 어린이에게 적용하십시오 – zebrabox

+0

회전 전후의 그림을 제공 할 수 있으며 장면이 어떻게 생겼을까요? – antpaw

관련 문제