2017-05-04 63 views
2

我有一面在HTML5畫布上從右向左移動的屏幕。我正在使用磚塊圖像的重複圖案,使其看起來像整個牆壁都用磚塊覆蓋。如何在html5畫布上繪製移動的重複圖案

下面是一個創建和填充圖案的相關代碼:

this.update = function() { 
    var context = gCanvas.context; 
    context.fillStyle = context.createPattern(this.image, "repeat"); 
    context.fillRect(this.x, this.y, this.width, this.height); 
}; 

從右到左牆移動,但模式不會隨之移動,使它看起來像模式是靜態圖像和牆面正在滾動。我需要的是模式跟隨牆壁,使它看起來像整個牆從右向左移動。

請參閱下面的jsfiddle看到這個動作:

https://jsfiddle.net/ugmo1cd3/4/

+0

飛揚的小鳥,是吧? – Bernard

+0

@伯納德,哈,是的,你明白了。其實我的版本被稱爲「Robotman」,它在這裏發佈:https://chrome.google.com/webstore/detail/robotman/cjpdlmjbocfbhjgdpmfkcphkacmighmb?hl=en-US&gl=US –

回答

1

您可以更改長城更新功能於

this.update = function() { 
    var context = gCanvas.context; 
    context.fillStyle = context.createPattern(this.image, "repeat"); 
    context.save(); 
    context.translate(this.x, this.y); 
    context.fillRect(0, 0, this.width, this.height); 
    context.restore(); 
}; 

模式現在開始在(X,Y )而不是在畫布的(0,0)

+0

您也可以將'createPattern'移動到構造函數中:'this.PAT = gCanvas.context.createPattern(this.image,「repeat」);'然後在更新函數中使用'PAT',以便在每次更新 – MaanooAk

+1

時停止創建,這正是我需要的! Upvoted和接受的答案,它仍然不夠。謝謝!僅供參考 - 這是讓我完成創建我的遊戲的最後一點 - https://chrome.google.com/webstore/detail/robotman/cjpdlmjbocfbhjgdpmfkcphkacmighmb?hl=zh-CN-g&=US&gl=CN。你現在可以感覺到你已經參與其中。 :) –