q1: est-il possible d'avoir un rectangle invisible?
En effet, c'est!
ctx.fillStyle = 'rgba(255,255,255,0)';
ctx.fillRect(50,50,50,20);
Bien que cela fonctionne aussi, et est un peu plus concis:
;
q2: est-il possible de faire appel à la méthode méthode?
On peut imaginer que vous pourriez faire quelque chose comme ceci:
//Naive generic chainer function
//returns this even if the default
//value is significant!
function chain(obj) {
function F() {}
F.prototype = obj;
var cobj = new F();
for (var i in obj) {
if (typeof obj[i] == 'function') {
//Function Bind-ish
cobj[i] = (function() {
var method = i;
return function() {
this.constructor.prototype[method].apply(this, arguments);
return this;
};
}());
}
}
return cobj;
}
var chained = chain(ctx);
chained.fillRect(0,0,200,200)
.fillRect(100,100,200,200)
.fillRect(400,400,100,100)
.fillText("I CAN HAS INVISDIBLE??", 250, 250);
Mais pourquoi la peine quand vous pouvez le faire:
with (ctx) {
fillRect(100,100,200,200);
fillRect(300,300,100,100);
fillStyle = 'green'; //I CAN SEE
fillText("SCREW BEST PRACTICES");
}
Eh bien, j'ai besoin d'une possibilité de déplacer un bloc de texte sur une toile à un autre endroit de la même toile et il y a plusieurs blocs de textes (disons, 20). Et il semble qu'il pourrait être plus facile de déplacer un rectangle dans une toile par rapport à un bloc de texte, d'où les questions. pls voir le fil suivant pour le "plus grand" objectif de la question, merci. http://stackoverflow.com/questions/3313918/how-to-use-mouse-event-instead-of-keycode-for-html5-canvas-and-jquery –
Vous ne pouvez rien déplacer dans le canevas, modifiez seulement pixels. Si vous avez besoin de suivre l'évolution des choses, vous devez le faire séparément ou utiliser une bibliothèque qui le fait pour vous. – pr1001
svg, svg, merci. –