simple avoiding algorithm.
특정한 부분에 머물면서 마우스를 피하는 물체를 만들어 보자.
import flash.events.Event;
import flash.display.Sprite;
const thres:Number=100
var apple:Sprite=new Sprite();
apple.graphics.beginFill(0);
apple.graphics.drawCircle(0,0,25);
//apple.graphics.drawRect(-25,-25,50,50);
addChild(apple);
addEventListener(Event.ENTER_FRAME,ef);
function ef(e:Event):void{
var nx:Number
var ny:Number
var dx:Number
var dy:Number
nx=(275+apple.x*2)/3
ny=(200+apple.y*2)/3
dx=nx-mouseX
dy=ny-mouseY
var d:Number
if(dx==0 && dy==0){
dx=1
}
d=Math.sqrt(dx*dx+dy*dy);
//d=(Math.abs(dx-dy)+Math.abs(dx+dy))*.707 //물체의 모양에 따라 거리를 다르게 계산해 주자.
if(d<thres){
d=thres/d
nx=dx*d+mouseX
ny=dy*d+mouseY
}
apple.x=nx
apple.y=ny;
}
물체를 일단 끌고온 다음 마우스로부터 떨어뜨려 놓는거죠 설명해드리자면
import flash.events.Event;
물체를 일단 끌고온 다음 마우스로부터 떨어뜨려 놓는거죠 설명해드리자면
import flash.events.Event;
import flash.display.Sprite;
const thres:Number=100 << 당신이 원하는 거리입니다.
var apple:Sprite=new Sprite();
apple.graphics.beginFill(0);
apple.graphics.drawCircle(0,0,25);
//apple.graphics.drawRect(-25,-25,50,50);
addChild(apple);
addEventListener(Event.ENTER_FRAME,ef);
function ef(e:Event):void{
var nx:Number
var ny:Number
var dx:Number
var dy:Number
nx=(275+apple.x*2)/3
ny=(200+apple.y*2)/3 <<물체를 275, 200으로 끌고 옵니다.
dx=nx-mouseX
dy=ny-mouseY
var d:Number
if(dx==0 && dy==0){
dx=1
} << 거리가 0이면 물체를 이동시킬 방향을 따로 정해줍니다.
d=Math.sqrt(dx*dx+dy*dy); //거리를 계산합니다.
//d=(Math.abs(dx-dy)+Math.abs(dx+dy))*.707 //물체의 모양에 따라 거리를 다르게 계산해 주자.
if(d<thres){ //그리고 일정 거리 이하이면 일정 거리가 되도록 중심에서 다시 떨어뜨립니다.
d=thres/d
nx=dx*d+mouseX
ny=dy*d+mouseY
}
apple.x=nx
apple.y=ny;
}
'Random Thoughts > Coding Tips' 카테고리의 다른 글
CSS로 선택된 부분의 색깔을 변하지 않게 해보자. (0) | 2015.12.18 |
---|---|
CSS3만을 이용해 메뉴 만들기 (0) | 2015.11.19 |