【问题标题】:Using a sprite sheet with createPattern()使用带有 createPattern() 的精灵表
【发布时间】:2014-01-31 18:41:10
【问题描述】:
【问题讨论】:
标签:
html
canvas
repeat
sprite-sheet
【解决方案1】:
好的,我已经找到了解决方案。基本上, createPattern() 可以将图像或画布元素作为其第一个参数。所以你需要做到以下几点:
var pattern_canvas = document.createElement('canvas');
pattern_canvas.width = texture_width;
pattern_canvas.height = texture_height;
var pattern_context = pattern_canvas.getContext('2d');
pattern_context.drawImage(img , texture_sx , texture_sy , texture_width , texture_height);
var final_pattern = canvas_context.createPattern(pattern_canvas , "repeat");
canvas_context.fillStyle = final_pattern;
canvas_context.fillRect( 0 , 0 , canvas.width , canvas.height );
如果您这样做,那么您的画布元素将重复绘制 pattern_canvas 以覆盖其尺寸。
【讨论】:
-
在 drawImage function 的 5 参数版本中,后两个参数表示 输出 图像中的偏移。要选择输入 spritesheet 的正确部分,drawImage 调用应使用 9 参数版本:pattern_context.drawImage(img, texture_sx, texture_sy, texture_width, texture_height, 0, 0, texture_width, texture_height);