J'ai beaucoup joué avec la toile dernièrement. Maintenant, j'essaie de construire une petite bibliothèque d'interface utilisateur, here is a demo to a simple list (Remarque: utilisez vos touches fléchées, Chrome/Firefox uniquement) Comme vous pouvez le constater, la performance est plutôt mauvaise - parce que je supprime et redessine chaque élément sur chaque image :Question sur l'objet javascript-canvas (save, transform, restore)
this.drawItems = function(){
this.clear();
if(this.current_scroll_pos != this.scroll_pos){
setTimeout(function(me) { me.anim(); }, 20, this);
}
for (var i in this.list_items){
var pos = this.current_scroll_pos + i*35;
if(pos > -35 && pos < this.height){
if(i == this.selected){
this.ctx.fillStyle = '#000';
this.ctx.fillText (this.list_items[i].title, 5, pos);
this.ctx.fillStyle = '#999';
} else {
this.ctx.fillText (this.list_items[i].title, 5, pos);
}
}
}
}
Je sais qu'il doit y avoir de meilleures façons de faire, comme par save() et transform() mais je ne peux pas envelopper la tête autour de l'idée - je ne peux sauver toute la toile, transformer un peu et restaurer toute la toile. Les informations et les exemples concrets sur ce sujet spécifique sont également assez rares, peut-être que quelqu'un ici peut me pousser dans la bonne direction.
Ceci est correct! Merci beaucoup! Il semble étrange d'engendrer une autre toile, mais vous n'avez jamais besoin de l'ajouter au dom, donc ce qui donne. J'ai également mis à jour ma démo. – saibotd