AS3 Qaytish kaydırıcısından doimiy qiymat

0 va 1 o'rtasida o'qish uchun, men aylana bo'ylab harakatlanadigan raqamli qo'ng'roq oldim.

Shunga o'xshash narsa:

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;

Bu ish ajoyib, faqat 359 gradusdan 1 gradusgacha ketadigan bo'lsa, mening qiymatim 0 dan 1 ga teng bo'ladi. (Qiymat mantiqqa to'g'ri keladi, chunki qiymat kaydırıcımın burchagiga asoslangan)

Men qo'ng'iroqni 359 darajadan 361 gacha va undan keyin boshlashga harakat qilmoqchiman.

Men boshimda: sichqonchani siqishimning keyingi qiymati 360 graduslik nuqtadan o'tishi kerakmi, tekshirishim kerakmi va nolga qaytishni to'xtatish va 361 daraja davom ettirish uchun jami 360 ga qo'shib qo'ying.

Buni kodga qanday kiritish kerakligini o'ylayman ...

0

1 javoblar

To'pni aylanayotganingizda har bir freymda to'g'ridan-to'g'ri burchak o'rniga burchak masofasining o'zgarishini tekshiring.

Avvalgi kvadrat burchagini saqlang va farqning ijobiy yoki salbiy ekanligini tekshiring.

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.

Kodda ba'zi xatolar bo'lishi mumkin (eski loyihadan olingan), lekin bu uning mazmuni :)

Umid qilamanki bu yordam!

0
qo'shib qo'ydi