AS3 Айналу жүгірткісінің үздіксіз мәні

Менде 0-ден 1-ге дейін оқуға арналған шеңберді айналдыратын терім бар.

Сол сияқты бірнәрсе:

dx = mouseX-centerX;
        dy = mouseY-centerY;
        rad = Math.atan2(dy,dx);

        rad += offset;

        Tweener.addTween(knob,{y:centerY - Math.cos(rad)*radius, time:.1,  transition:"easeOutSine"});
        Tweener.addTween(knob,{x:centerX + Math.sin(rad)*radius, time:.1,  transition:"easeOutSine"});
        knob.rotation = rad * 180/Math.PI;

Бұл жұмыс өте жақсы, жүгірткі 359 градустан 1 градусқа шыққан жағдайдан басқа, менің 0 мен 1 арасындағы мәндер нөлге оралады. (Мәні мәнді, жүгірткімнің бұрышына негізделгендіктен)

Мен теру үшін 359 градустан 361-ге дейін және одан кейін жылжу жолын табуға тырысамын.

Менің басымда: тінтуірдің келесі ағытпасының мәні 360 градусқа жететінін тексеріп, 360-ға толықтырып, 361 градусқа дейін жалғасады.

Мен оны кодқа қалай қою керектігін білмеймін ...

0

1 жауаптар

Тұтқаны айналдыра отырып, әр кадрға тікелей бұрыштың орнына бұрыштық қашықтықтағы өзгерісті тексеріңіз.

Алдыңғы кадрлар бұрышын сақтаңыз және айырмашылық оң немесе теріс екенін көріңіз.

var rad = Math.atan2(dy, dx);
var diff = rad - oldRad;
oldRad = rad;
if( diff > Math.PI )
  diff -= Math.PI * 2;
if( shortestAngle < -Math.PI )
  diff += Math.PI * 2;

diff should contain a value that if it's been rotated to the right, is positive (or negative if rotated left). Simply add that to the total angle.

Кодта кейбір қателер болуы мүмкін (оны ескі жобадан алып тастады), бірақ бұл оның мағынасы :)

Бұл көмектеседі деп үміттенемін!

0
қосылды