Я второй, что Матти сказал, но это можно сделать быстрее - за 48–64 бит (примерно столько !!!)
var dX:Number = x1 - x2;
var dY:Number = y1 - y2;
var dist:Number = Math.sqrt(dX * dX + dY * dY);
var animTime = dist / state.stageWidth;
И объяснить, что по запросу eb Dev квадратный корень является частью теоремы Пифагора:
a^2 + b^2 = c^2
Линии на осях X и Y можно рассматривать как две ветви прямоугольного треугольника, и поэтому гипотенуза будет расстоянием между двумя конкретными точками (которые нам нужны).
Сначала вычитаем точки (x1 - x2, y1 - y2). У нас все еще есть две точки, однако прямоугольная часть треугольника теперь находится в 0, 0 - точке пересечения осей X и Y. Чтобы можно было применить это к теореме Пифагора, давайте посмотрим, какие размеры будут a и b - длина ноги a - это расстояние между 0, 0 и точкой 1. Вычитание 0, 0 все равно оставит нас с точкой 1 - однако мы знаем, что это будет где-то на оси X - поэтому его Y будет 0. Мы можем сказать, что длина a равна X части пункта 1.
То же самое относится к b ноге и точке 2. На этот раз, однако, мы получаем только часть Y.
И для вычисления c мы сначала суммируем вторые степени a и b (a ^ 2 + b ^ 2). Теперь у нас есть c ^ 2, поэтому, чтобы получить c - гипотенузу, мы рассчитаем его квадратный корень (то есть Math.sqrt () в AS3.0).
c - это расстояние.
Надеюсь, это объясняет это.