public static moveDirection(oldPos: egret.Point,newPos: egret.Point,lastDirection = null):number{//返回方向
//计算角度、方向 Math.atan2根据两点坐标计算到oldPos的弧度
var angleSpeed: number = Math.atan2(newPos.y - oldPos.y,newPos.x - oldPos.x);
//弧度转化为角度 角度= 弧度*180/π
var N = angleSpeed * 180 / Math.PI;
if(oldPos.y == newPos.y && oldPos.x == newPos.x) {
if(lastDirection == null){
return EnumManager.DIRECTION_ENUM.DIR_UP_RIGHT;
}
return lastDirection;
} else {
if(N <= 20 && N >= -20) {
return EnumManager.DIRECTION_ENUM.DIR_RIGHT;
} else if(N <= 110 && N >= 70) {
return EnumManager.DIRECTION_ENUM.DIR_DOWN;
} else if(N <= -160 || N >= 160) {
return EnumManager.DIRECTION_ENUM.DIR_LEFT;
} else if(N <= -70 && N >= -110) {
return EnumManager.DIRECTION_ENUM.DIR_UP;
} else if(N < 70 && N > 20) {
return EnumManager.DIRECTION_ENUM.DIR_DOWN_RIGHT;
} else if(N < 160 && N > 110) {
return EnumManager.DIRECTION_ENUM.DIR_DOWN_LEFT;
} else if(N < -110 && N > -160) {
return EnumManager.DIRECTION_ENUM.DIR_UP_LEFT;
} else if(N < -20 && N > -70) {
return EnumManager.DIRECTION_ENUM.DIR_UP_RIGHT;
}
return EnumManager.DIRECTION_ENUM.DIR_DOWN;
}
}
//弧度转化为角度 角度= 弧度*180/π
//角度转弧度 弧度=角度*π/180
从某种意义上来说,π就相当于180°,哈哈,又回到高数了,还是熟悉的味道