Если у вас есть точка отсчета (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.
И наконец, что наиболее важно, мой скрипт учитывает отрицательные числа при расчете радианов, он предполагает, что все положительно - это потребует некоторой настройки.
PS: вам нужно время от времени очищать samples
, так как длина массива будет максимальной.
Мой сценарий неполный, и я буду рад правкам, предложениям и уточнениям. Я надеюсь, что это даст вам что-то для размышлений и работы.
person
zamnuts
schedule
23.03.2013