Чтобы найти угол между двумя точками, вы можете использовать:
atan(dy/dx)
или atan2(dy,dx)
, где dy = to.y - from.y
и dx = to.x - from.x
Это будетВы получите радианы от горизонтальной оси, где 0 будет справа.Однако свойство rotation
во Flash - это градусы от вертикальной оси, где 0 - вверх.Поэтому вам нужно повернуть это в градусы и повернуть на 90 градусов, потому что если atan
говорит 0 радиан, то в пространстве Flash это 90 градусов и -PI / 2 радиан = 0 градусов и т. Д.
Должно работать следующее:
var degrees = Math.atan2(clip.y-arrow_clip.y,clip.x-arrow_clip.x)*(180/Math.PI) + 90;
Второй опубликованный вами пример работает, потому что он выполняет поворот на 90 градусов, переключаясь вокруг осей и инвертируя результат.Он рассчитывает от clip
до arrow
, а затем -atan(dx/dy)
.Обратите внимание, что его dx
превышает dy
(вместо того, что должно быть) и сводит на нет результат.По сути, делает для вас поворот на 90 градусов.