重复纹理以循环使用clip()
Repeat texture to loop around with clip()
我有一个纹理,我在剪裁平面上使用drawImage()
。但我有一个问题,当它移动超过纹理的宽度时,我不知道如何将其包裹起来,这样它就无限期地循环,而且由于某种原因,它也不会被剪裁。
我的绘图代码如下:
var radius = 120;
var pos = {'x':canvas.width/2,'y':canvas.height/2};
var x = 0;
var offsetX = 0;
function draw() {
ctx.clearRect(0,0,canvas.width,canvas.height);
x += 1.1415;
ctx.beginPath();
ctx.arc(pos.x, pos.y, radius, 0, Math.PI * 2, false);
ctx.closePath();
ctx.clip();
var scale = (radius * 2) / img.height;
ctx.drawImage(img, pos.x+x, pos.y, img.width, img.height, pos.x - radius - offsetX * scale, pos.y - radius, img.width * scale, img.height * scale);
ctx.restore();
requestAnimationFrame(draw);
}
我在这里创建了演示,这样你就可以看到当纹理移动得太远时会发生什么,它基本上消失了,我需要它再次循环,没有间隙,所以它是无缝的:http://jsfiddle.net/dv2r8zpv/
绘制纹理的位置以使其环绕的最佳方法是什么,我不太明白如何做到。
我现在已经创建了一个无缝循环。我更改的代码如下。更改drawImage上的y封装整个圆圈
if (x > img.width) {
x = 0;
}
ctx.drawImage(img, x, 0, ...);
ctx.drawImage(img, -img.width+x,0, ...);
更新了完整圆圈的答案
相关文章:
- jQuery:循环一个具有不同超时值的循环
- 在循环中分配json值时,值被覆盖
- 如何在下面的ES6循环中获得前面的文本
- 为什么“;未定义的“;在JavaScript中结束循环
- Javascript循环不会自我更新
- 如何使用jquery处理php循环通过元素
- 而循环只设置php中输入字段中的第一个值
- 循环遍历数组中的特定索引
- Javascript返回值只在循环中返回一次
- 按照选项卡索引的顺序循环一个jQuery选择
- 循环遍历以数组为值的Javascript对象
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 循环结束/推送到数组之前在页面上呈现EJS
- 循环比赛位置算法
- jQuery循环在特定位置暂停
- 我的javascript for循环不起作用
- 循环浏览多个身体背景图像
- W3C循环样式的JavaScript
- 重复纹理以循环使用clip()