2009-11-11 2 views

Répondre

7

Au lieu de traduire vers l'avant puis vers l'arrière traduire à nouveau, il suffit de pousser votre état actuel sur la pile avant de traslate/faites tourner, et quand vous avez terminé - pop retour votre état de la pile. C'est ainsi que la plupart des applications graphiques utilisent des translations/rotations. De plus, vous traduisez par x, y, puis en appelant ctx.drawImage(guy, x, y). Cela va, en effet, doubler le décalage. Je soit se débarrasser de l'appel à traduire ou modifier les arguments de position pour l'appel drawImage à 0, 0.

function drawGuy() { 
    ctx.save();                               
    ctx.translate(x,y);  
    ctx.rotate(angle * Math.PI/180);                    
    ctx.drawImage(guy, 0, 0); 
    ctx.restore();            
}

Découvrez les spécifications à propos context.save() et context.restore() (la toile de façon fait push/pop état), here.

+0

Impressionnant, merci. Mais maintenant, l'image ne tourne pas ... –

+0

un plus .. modifier vous aurez besoin pour augmenter votre angle de rotation. C'est pourquoi la rotation ne se produit pas en animation. Ça arrive, ça ne change pas avec le temps. – JasonWyatt

+0

Oh yeah> _> idiot moi, désolé. Merci pour l'aide! –

Questions connexes