【发布时间】:2019-02-15 17:47:12
【问题描述】:
我想使用原型绘制许多不同大小的圆圈,上面有相同的图像。问题是,圆圈上没有绘制图像。
圆圈仍然存在,因为它们在使用描边时可见,但未绘制图像。我能够在没有原型的情况下绘制带有图像的弧线,但是一旦我使用它,它就不起作用了。
控制台中没有出现任何错误,所以我不清楚我缺少什么。 我尝试将事件侦听器移到原型之外,但圆形图像仍然没有出现。
如果有人对为什么这不起作用有任何见解和解决方案,他们可以分享,那将不胜感激。
代码如下:
const ctx = document.getElementById('canvas').getContext('2d');
class Balls {
constructor(xPos, yPos, radius){
this.xPos = xPos;
this.yPos = yPos;
this.radius = radius;
}
}
Balls.prototype.render = function(){
const img = document.createElement('img');
img.src = 'crystal.jpg';
ctx.arc(this.xPos, this.yPos, this.radius, 0, Math.PI*2)
ctx.stroke();
ctx.clip();
img.addEventListener('onload', function(e){
ctx.drawImage(img, this.xPos - this.radius, this.yPos - this.radius,
this.radius*2, this.radius*2);
});
};
let object = new Balls(100, 100, 50);
object.render();
<canvas id='canvas'></canvas>
【问题讨论】:
-
我不确定这是否能解决问题,但如果您使用的是一个类,您只需将渲染方法添加到它,您就不需要原型。由于 CORS,图像可能无法绘制 - 您从哪里加载图像? developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image
标签: javascript object html5-canvas prototype drawimage