[英]How to use HTML5 Canvas functional style
我正在使用HTML5的Canvas元素進行一些工作,我想知道如何以功能方式最好地實現我自己的自定義繪制函數。 其中每一個都需要上下文,但我可以想出多種方式給它們:
我不喜歡使用全局變量,如果我可以避免它,所以我逐步淘汰選項2.選項3需要太多的代碼重復,所以我也忽略了。
這讓我有了選擇1,這就是我在非功能性語言中的表達方式,而我認為這是最干凈的方法,但我並不完全確定它不會導致問題。 你怎么做呢? 我不應該選擇4嗎?
為了說明這一點,我將為每個剩余選項添加一個代碼示例。 這是選項1:
function drawPerson(context, ...) {
context.fillRect(...);
...
}
$(function() {
var context = $("#canvas")[0].getContext("2d");
drawPerson(context, ...);
});
這里選項4:
CanvasRenderingContext2D.prototype.drawPerson = function(...) {
this.fillRect(...);
...
}
$(function() {
var context = $("#canvas")[0].getContext("2d");
context.drawPerson(...);
});
另一種選擇是使用包含所有繪圖函數和initialize()的模塊:
var Painter = (function(){
var context = null;
return {
init : function(ctx){
context = ctx;
},
drawPerson : function(){
/* do stuff with context*/
}
}
})();
Painter.init($("canvas").getContext("2d"));
Painter.drawPerson();
這樣只有一個全局var,上下文只設置一次,你不會亂用其他對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.