Comment faire pivoter une image dans un canvas?
Je fais un HTML5 canvas jeu, et je souhaite faire pivoter l'une des images.
var link = new Image();
link.src='img/link.png';
link.onload=function(){
ctx.drawImage(link,x,y,20,20); //draws a chain link or dagger
}
Je souhaite faire tourner cette image. Le niveau moyen de la rotation de l'image était de définir une rotation sur la toile objet de contexte. Cependant, qui fait tourner l'ensemble du jeu! Je ne veux pas le faire, et que vous souhaitez uniquement faire tourner cette un sprite. Comment dois-je faire?
De 18 000 points de vue et 4 upvotes...c'est un peu bizarre
OriginalL'auteur Razor Storm | 2011-09-21
Vous devez vous connecter pour publier un commentaire.
Utilisation
.save()
et.restore()
(plus d'informations):Tempête: Vous avez besoin de traduire le milieu et de le traduire en arrière, mais vous avez réussi à le faire déjà que vous avez posté.
Je crois qu'il est plus performant pour faire une rotation inverse après drawImage, au lieu de les sauvegarder et les restaurer.
OriginalL'auteur pimvdb
Vous pourriez vouloir mettre un
translate();
là parce que l'image va tourner autour de l'origine et qui est dans le coin en haut à gauche par défaut si vous utilisez letranslate();
pour modifier l'origine.ok, donc u ont une position u voulez dessiner une image qui sera (x, y). donc ce que tu veux faire, c'est de traduire l'origine (0, 0) à la position (x, y) de sorte que la position est maintenant (0, 0) u et dessiner ur droit à l'image sur le dessus de l'origine. donc, si ur de l'image est à 20 pixels de haut et de large ctx.drawImage(lien,-10,-10,10,10); et u sera en mesure de faire pivoter l'image autour de son centre.
OriginalL'auteur Carb0n1c
Ici j'ai fait un exemple de travail de l'un de mes jeux. u peut obtenir l'image de Ici.
OriginalL'auteur Carb0n1c
Original de votre "solution" est:
Cependant, il peut être rendu plus efficace (sans
save
ourestore
) à l'aide de ce code:OriginalL'auteur Doorknob
J'ai fini par avoir à faire:
drawImage();
vous êtes juste de doubler les valeurs, au lieudrawImage(this.daggerImage,-10,-10,10,10);
. Il n'y a plus d'infos sur developer.mozilla.org/en/Canvas_tutorial/Transformations sur ce genre de chosesOriginalL'auteur Razor Storm