Если у Вас есть точка отсчета (0,0), вы можете попробовать изменение угла с течением времени:
var sprite:Sprite = new Sprite();
var samples:Array = [];
setInterval(function(){
var len = samples.push(Math.atan2(sprite.mouseY,sprite.mouseX));
if (len >=2) {
if (samples[len-2]-samples[len-1] > 0) {
// clockwise
} else {
// counter-clockwise
}
}
},1000/stage.frameRate);
Ссылка является левой верхней части спрайта (или его естественный 0, 0 на atan2
), поэтому этот фрагмент отображает координату мыши относительно спрайта.
Кроме того, чем больше образцов вы считаете (я только выборка 2 samples[len-2]
и samples[len-1]
), тем лучше решение для cw или ccw.
Наконец, и, что более важно, мой сценарий рассматривает отрицательные числа в расчетах радиан, он предполагает, что все положительно - для этого потребуется некоторое tweeking.
PS: Вы хотите очистить samples
каждый раз, когда длина массива будет максимальной.
Мой сценарий неполный, и я бы приветствовал изменения, предложения и разработки. Я надеюсь, что это даст вам возможность подумать и поработать.