Flash&Action

3D 메뉴 만들기

디자인인스 2010. 10. 20. 10:11

3D 메뉴 ■
- 화면에서 마우스가 가운데를 기준으로 왼쪽과 오른쪽으로 움직일때 마다 3D로 메뉴가 돌아가는 모습입니다.

■ 실행화면 ■
- 주소 : http://211.213.29.59:8080/test/3Dmenu.swf

■ 소스 ■
1. 프레임 액션 스크립트.
dupNum = 3;
for (j=1; j<=dupNum; j++) {
this["menu"+j].i = (360/(dupNum+1))*j;
}
// 메뉴마다 처음 위치가 다르게 하기 위해서 한바퀴를 도니깐 360도에서 메뉴가 4개가 나오니깐 이런식으로 했습니다.

2. 무비 액션 스크립트
onClipEvent (load) {
halfx = 600/2;
halfy = 300/2;
r=180;
a=30;
function speed (num) {
speedx = (_root._xmouse-halfx)/num;
return speedx;
}
function trans () {
Ptheata += speed(40);
range = ((Ptheata+i)*Math.PI)/180;
result1 = ((Math.sin(range))*r);
result2 = ((Math.cos(range))*a);
}
function property () {
trans();
_x = halfx+result1;
if (result2<=0){
_xscale=result2*1.5;
_yscale=Math.abs(result2+70);
}else{
_xscale=result2*3;
_yscale=result2+70;
}
this.swapDepths(_xscale);
}
}
onClipEvent (enterFrame) {
property();
}
// 원리는 사인값과 코사인 값을 이용한 것이지요...
// 수를 바꿔서 해 보시면 그 의미를 더 정확히 알수 있을겁니다.
// 사인 그래프와 코사인 그래프를 그려보시면 사인은 0 1 0 -1 이런식으로 값을 가지구 코사인은 1 0 -1 0 이런식으로 값을 갖습니다. 그래서 사인은 돌아가는 x축의 변화를 코사인은 property에 이용을 하는겁니다.
// 그리고 trans에서 사인이나 코사인 값은 그냥 degree값을 주는게 아니라 라디안 값을 주어야 하기 때문에 값에 pi값을 곱하고 180으로 나누어준값을 넣어야 합니다.
그리고 property 함수에서 절대값을 취하는것은 그냥 하면은 글자가 거꾸로 뒤집어 보이질 않거든여..그래서리 if문을 사용해서 0의 위치가 되었을때...즉 맨 앞에 보일때는 똑바른 문자를 맨 뒤에 보일때는 뒤집어진 문자를 해야 돌아가는듯한 효과를 내기 때문이죠..
// 그리고 버튼이므로 _xscale에 따라서 swapDepth를 주어서 겹치면 맨 앞버튼이 선택되도록 했습니다. 이런 버튼을 4개를 만들어서 만든 것입니다. 버튼을 더 만드시고 싶으시면 라이브러리에서 심볼을 복사하셔서리 글자 수정하시고 instance명을 menu4,menu5,이런식으로 하시고 무비클립액션을 그대루 넣으시구 1프레임 dupnum 값을 메뉴수-1 로 하면 됩니다.

■ 느낌 ■
- 음..아직 이해하지는 못했습니다. 생각보다(제가 배운)것 보다 좀 다른것이 있어서..긁적..

'Flash&Action' 카테고리의 다른 글

Flash note  (0) 2010.10.20
메쏘드 모음  (0) 2010.10.20
Uppercase, LowerCase  (0) 2010.10.20
Flash Game + PHP 랭킹시스템  (0) 2010.10.20
랜덤 랜덤플래쉬  (0) 2010.10.20