Abbiamo ottenuto 3 punti: iniziare, fine e la posta.punto Javascript per punto di calcolo angolo
L'immagine elettronica, si muove in una linea curva dal punto di inizio e di fine, questo è fatto da jQuery animare.
Ora il passaggio successivo consiste nel ruotare l'immagine della posta mentre l'animazione è in esecuzione. Quindi al punto iniziale e al punto finale sarebbe ruotato di 0 gradi, ma durante l'animazione dovrebbe ruotare di fronte al percorso dell'animazione. (Vedi immagine)
Quello che ho cercato:
// 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'));
}
});
Ma il codice di cui sopra non è corretto, l'angolo non faccia quando ha iniziato/finito, ho molto poco Esperienza con la matematica geometrica, quindi apprezzo molto l'aiuto per i calcoli rotanti.
Non vedo perché dovrebbe essere rivolto verso l'alto quando è stato avviato/terminato dato che il percorso nella foto non esce dalla partenza e immette la fine con un angolo di 90 °. –
@MattBall l'animazione vera effettivamente inizia e termina con un angolo di 90 °, l'immagine è stata rapidamente in Photoshop e ha un offset tristemente – randomKek
È questo che vedi? http://jsfiddle.net/R5dRd/ – bfavaretto