[부딪쳐 튕김]
/*
mc
*/
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Bouncing extends Sprite
{
private var ball:Ball;
private var vx:Number;
private var vy:Number;
// -0.7 -1
private var bounce:Number = -0.7;
public function Bouncing()
{
init();
}
private function init():void
{
ball = new Ball ;
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
vx = Math.random() * 20 - 10;
vy = Math.random() * 20 - 10;
addChild(ball);
addEventListener(Event.ENTER_FRAME,onEnter);
}
private function onEnter(e:Event):void
{
ball.x += vx;
ball.y += vy;
var left:Number = 50;
var right:Number = stage.stageWidth - 50;
var up:Number = 50;
var down:Number = stage.stageHeight - 50;
if (ball.x + ball.radius > right)
{
ball.x = right - ball.radius;
vx *= bounce;
}
else if (ball.x - ball.radius < left)
{
ball.x = left + ball.radius;
vx *= bounce;
}
if (ball.y + ball.radius > down)
{
ball.y = down - ball.radius;
vy *= bounce;
}
else if (ball.y - ball.radius < up)
{
ball.y = up + ball.radius;
vy *= bounce;
}
// ball mc
if (ball.hitTestObject(mc))
{
var dx:Number = ball.x - mc.x;
var dy:Number = ball.y - mc.y;
var dist:Number = Math.sqrt(dx * dx + dy * dy);
var radians:Number = Math.atan2(dy,dx);//
var drgress:Number=radians*180/Math.PI;//
//(radians=drgress/(180/Math.PI)||radians=drgress/180*Math.PI)
//trace(drgress);
//vx = Math.cos(radians) * speed;
//vy = Math.sin(radians) * speed;
if(drgress<45&&drgress>-45)
{
ball.x=mc.x+mc.width/2+ball.width/2
vx *= bounce;
}
else if ((drgress>-180&&drgress<-135)||(drgress<180&&drgress>135))
{
ball.x=mc.x-mc.width/2-ball.width/2
vx *= bounce;
}
if (drgress>-135&&drgress<-45)
{
ball.y=mc.y-mc.height/2-ball.height/2
vy *= bounce;
}
else if(drgress<135&&drgress>45)
{
ball.y=mc.y+mc.height/2+ball.height/2
vy *= bounce;
}
}
}
}
}
package
{
import flash.display.Sprite;
public class Ball extends Sprite
{
public var radius:Number;
public var color:uint;
public function Ball(radius:Number=10,color:uint=0Xff0000)
{
this.radius = radius;
this.color = color;
draw();
}
public function draw():void
{
graphics.beginFill(color);
graphics.drawCircle(0,0,radius);
graphics.endFill();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.