• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

ruch obiektu po krzywej - js, onmousemove

VPS Starter Arubacloud
0 głosów
261 wizyt
pytanie zadane 22 kwietnia 2019 w JavaScript przez mola85 Początkujący (320 p.)

Witam, chciałabym uzyskać płynny ruch obiektu w momencie, kiedy porusza się on po krzywej. Kod działa w porządku, kiedy kółko porusza się  po linii prostej, jednak gdy zmieniam kąt prostej koło zaczyna przeskakiwać i jego ruch przestaje być płynny. Czy ktoś ma może jakiś pomysł? Dziękuje za odpowiedzi.

<div id = "circle-overlay">
<span id = "circle"></span>
</div>

    #circle-overlay{
        width: 500px;
        position: relative;
        height: 2px;
        margin: 100px auto; 
        background: black;
        transform: rotate(-10deg);
}

 #circle{
        width:50px;
        height: 50px;
        border-radius: 50%;
        background: transparent;
        position: absolute;
        top: -25px;
        left: -25px;
        border: 2px solid white;
        z-index: 10;   
    }
let line = document.getElementById('circle-overlay'),
circle = document.getElementById('circle'),

w = circle.offsetWidth/2;
h = circle.offsetHeight/2;
    
circle.addEventListener('mousedown', function(){
 
circle.addEventListener("mousemove", moveCircle);
line.addEventListener("mousemove", moveCircle);
      
function moveCircle(e){
let x,y,a;
e.preventDefault();
e = e || window.event;  
 
//wyznaczenie odległości od viewport 
a = line.getBoundingClientRect();
x = e.pageX - a.left; 
y = e.pageY - a.top;
x = x - window.pageXOffset;
y = y - window.pageYOffset;

//ograniczenie ruchu kółka
if(x>a.width)x = a.width;//prawa krawędż   
if(x < 0)x = 0; //lewa krawędż
if(y>a.height) y = a.height; //dolna krawędż
if(y < 0)y = 0; //górna krawędż

    
circle.style.left = (x-w) + "px";
circle.style.top = (y-h) + "px";

    
this.addEventListener("mouseup", function(){
 this.removeEventListener('mousemove', moveCircle)
});
    
this.addEventListener("mouseout", function(){
 this.removeEventListener('mousemove', moveCircle)
  
});
       
}
  
})

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 207 wizyt
pytanie zadane 11 stycznia 2020 w JavaScript przez Kolberg Obywatel (1,560 p.)
0 głosów
0 odpowiedzi 160 wizyt
pytanie zadane 27 lipca 2019 w HTML i CSS przez kolekole Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 234 wizyt
pytanie zadane 7 marca 2016 w C i C++ przez Picowaty91 Początkujący (270 p.)

92,963 zapytań

141,928 odpowiedzi

321,161 komentarzy

62,297 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...