Mamy 3 punkty: rozpocząć, końcowy i pocztę.punkt Javascript by wskazać obliczenie kąta
Poczta obraz przesuwa się w zakrzywionej linii od punktu początkowego i końcowego, odbywa się to poprzez jQuery animowania.
Kolejnym krokiem jest sprawienie, aby obraz poczty obracał się podczas działania animacji. Tak więc w punkcie początkowym i końcowym byłby obrócony o 0 stopni, ale podczas animowania powinien obracać się w kierunku ścieżki animacji. (Patrz zdjęcie)
Co próbowałem:
// Init dom elements
var $start = $('#start');
var $end = $('#end');
var $mail = $('#mail');
// Get position coordinates
var startPos = $start.position();
var endPos = $end.Position();
// Angle calculation
var getAngle = function(currX, currY, endX, endY) {
var angle = Math.atan2(currX - endX, currY - endY) * (180/Math.PI);
if (angle < 0) {
angle = Math.abs(angle);
} else {
angle = 360 - angle;
}
return angle;
};
// Mail angle
var getMailAngle = function() {
var currPos = $mail.position();
var endPos = $end.position();
return getAngle(currPos.left, currPos.top, endPos.left, endPos.top);
};
// Animate
$mail.animate({top: endPos.top, left: endPos.left}, {
specialEasing: {left: "easeInSine", top: "linear"},
// Executed each "animation" frame, so we rotate here.
step: function() {
var angle = getMailAngle();
$(this).css('transform', 'rotate(' + angle + 'deg'));
}
});
Ale powyższy kod nie jest prawidłowy, kąt nie stawić czoła kiedy rozpoczął/zakończył, mam bardzo mało doświadczenie z matematyką geometrii, więc naprawdę doceniam pomoc w obliczeniach rotacyjnych.
Nie widzę powodu, dla którego powinien być skierowany do góry po uruchomieniu/zakończeniu, z uwagi na to, że pokazana ścieżka nie wychodzi z początku i wchodzi do końca pod kątem 90 °. –
@MattBall Prawdziwa animacja rzeczywiście zaczyna się i kończy pod kątem 90 °, obraz był szybko w Photoshopie i ma przesunięcie niestety – randomKek
Czy to widzisz? http://jsfiddle.net/R5dRd/ – bfavaretto