내부에 'rectM'이란 명칭의 파리 모양 무비클립을
담고 있는 'nemoM'이란 명칭의 막대기 무비클립, 'but01M'~'but05M' 명칭의 버튼용 무비클립(2번째
프레임은 버튼을 좀 더 밝은 색으로 보이게 처리)을 화면상에 올려두었다.
var n = nemoM; //네모 막대 무비클립
var but01 = but01M; //첫번째 버튼 무비클립
var but02 = but02M; //두번째 버튼 무비클립
var but03 = but03M; //세번째 버튼 무비클립
var but04 = but04M; //네번째 버튼 무비클립
var but05 = but05M; //다섯번째 버튼 무비클립
var butArr:Array = [but01, but02, but03, but04, but05];
var modes="modeChao"; //모드 변경용 변수
var ang = 0; //각도 변경용 변수
var px,py, px2,py2 = 0; //이전 점 위치 저장용.
var dx,dy = 0; //이전 점과 현 점 위치 차이 저장용
var lcolor, lcolor2=0; //선 색깔 저장용
function init(){
lcolor = Math.random()*0xffffff;
lcolor2 = Math.random()*0xffffff;
px = n.rectM.x; py = n.rectM.y;
addEventListener(Event.ENTER_FRAME, loop);
for(var i=0; i < butArr.length; i++){
butArr[i].addEventListener(MouseEvent.CLICK, mClick);
butArr[i].addEventListener(MouseEvent.MOUSE_OVER, mOver);
butArr[i].addEventListener(MouseEvent.MOUSE_OUT, mOut);
}
}
function loop(e:Event){
switch(modes){
case("modeRotation"):{rotate1(); break;}
case("modeAtan2"):{rotate2(); break;}
case("modeCosSin"):{rotate3(); break;}
case("modeCircle"):{rotate4(); break;}
case("modeChao"):{rotate5(); break;}
default:{rotate1(); break;}
}
}
function mOver(e:MouseEvent){ e.target.gotoAndStop(2); }
function mOut(e:MouseEvent){ e.target.gotoAndStop(1); }
function mClick(e:MouseEvent){
graphics.clear();
switch(e.target.name){
case("but01M"): modes="modeRotation"; break;
case("but02M"): modes="modeAtan2"; break;
case("but03M"): modes="modeCosSin"; break;
case("but04M"): modes="modeCircle"; break;
case("but05M"): modes="modeChao"; break;
}
}
function rotate1(){
n.rotation += 2;
n.rectM.rotation += 2;
}
function rotate2(){
n.rotation += 4;
//진행각도 구해 회전시키기
// ang = Math.atan2(n.y, n.x);
// n.rectM.rotation = ang * 180/Math.PI;
n.rectM.rotation = n.rotation;
}
function rotate3(){
n.rotation += 5;
n.rectM.x = Math.cos(ang)-Math.sin(ang)*100;
n.rectM.y = Math.sin(ang)+Math.cos(ang)*150;
n.rectM.rotation += 20;
ang += 0.05;
}
function rotate4(){
n.rotation += 5;
n.rectM.x = Math.cos(ang)-Math.sin(ang)*100;
n.rectM.y = Math.sin(ang)+Math.cos(ang)*100;
n.rectM.rotation += 10;
ang += 0.05;
n.rectM.x += 50, n.rectM.y += 30;
//선그리기 처리
lineDraw01(px+n.x-50, py+n.y-30, n.rectM.x+n.x-50, n.rectM.y+n.y-30, 1, lcolor);
lineDraw01(px+n.x-50, py+n.y-30, n.x, n.y, 1, lcolor2);
px2 = n.x, py2 = n.y;
px = n.rectM.x; py = n.rectM.y;
if(ang >= 6.29){
ang = 0;
graphics.clear();
lcolor = Math.random()*0xffffff;
lcolor2 = Math.random()*0xffffff;
}
}
function rotate5(){
n.rotation += 5;
n.rectM.x = Math.cos(ang)-Math.sin(ang)*100;
n.rectM.y = Math.sin(ang)+Math.cos(ang)*150;
n.rectM.rotation += 12;
ang += 0.05;
n.rectM.x += n.width/2, n.rectM.y += n.height/2;
//선그리기 처리
lineDraw01(px+n.x, py+n.y, n.rectM.x+n.x, n.rectM.y+n.y, 1, lcolor);
px = n.rectM.x; py = n.rectM.y;
if(ang >= 62.9){
ang = 0;
graphics.clear();
lcolor = Math.random()*0xffffff;
}
}
function lineDraw01(mX,mY,tX,tY,style1=1,style2=0){ //선그리기 함수
//(mX,mY)위치로 이동, 그곳에서 (tX,tY)까지 style(굵기,색)대로 선그리기
graphics.lineStyle(style1, style2);
graphics.moveTo(mX, mY);
graphics.lineTo(tX, tY);
}
init();
|