var g:Number = 0.1; //중력
var vx:Number = 3; //수평속도
var vy:Number = 0; //수직속도
var tx:Number = 0; //temp x 임시 마우스 좌표 저장용
var ty:Number = 0; //temp y
var ball:Ball = new Ball();
function init():void {
ball.x = 10;
ball.y = 75;
addChild(ball);
addEventListener(Event.ENTER_FRAME,onLoop);
ball.addEventListener(MouseEvent.MOUSE_DOWN,drag);
ball.addEventListener(MouseEvent.MOUSE_UP,drop);
}
function onLoop(evt:Event):void{
vy += g
ball.x += vx;
ball.y += vy;
if (ball.y > 350){ //바닥에 부딪칠
경우
ball.y =
350;
vy *= -0.8;
//수직속도 방향 반대로 바꾸고 줄이기
//수평속도 줄이기
if(vx>0){vx
-=0.1;}else if(vx<0){vx += 0.1;}
}else if(ball.y < 0){ //천정
ball.y =
0;
vy *= -0.8;
if(vx>0){vx
-=0.1;}else if(vx<0){vx += 0.1;}
}
if(ball.x < 0){ //왼쪽 벽
ball.x =
0;
vx *= -1;
//수평속도 반대로
vx -= 0.3;
//수평속도 줄이기
}else if(ball.x > 550){ //오른쪽
벽
ball.x =
550;
vx *= -1;
vx += 0.3;
}
//속도가 일정 이하일 경우 멈추기
if(Math.abs(vx) < 0.01){vx=0;}
if(Math.abs(vy) < 0.05){vy=0;}
}
function drag(e:MouseEvent):void{
removeEventListener(Event.ENTER_FRAME,onLoop);
tx = mouseX; //마우스 좌표 임시 저장
ty = mouseY;
ball.startDrag();
}
function drop(e:MouseEvent):void{
vx = int((mouseX-tx)/10); //속도 재설정
vy = int((mouseY-ty)/10);
addEventListener(Event.ENTER_FRAME,onLoop);
ball.stopDrag();
}
init(); |