2017-05-04 99 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。你现在可以感觉到你已经参与其中。 :) –