javascript - 一旦我再添加 1 个变量,函数就会停止工作?基于像素颜色为图像添加边界

标签 javascript css html

我一直在寻找一种方法来为我的迷宫游戏添加边界。

前段时间在这里发帖后,我注意到您可以从光标中获取像素/图像数据,然后如果该像素是某种颜色则告诉绘制函数不要运行。

考虑到这一点,我修改了我的初始代码

<script>
 var el = document.getElementById('can1');
 var ctx = el.getContext('2d');
 var isDrawing;
 var can = document.getElementById('can1');

 el.onmousedown = function(e) {
    isDrawing = true;
    ctx.strokeStyle = "green";
    ctx.lineWidth = 4;
    ctx.lineJoin = ctx.lineCap = 'round';
    ctx.moveTo(e.offsetX, e.offsetY);
}

el.onmousemove = function(e) {
  if (isDrawing) {
    ctx.lineTo(e.offsetX, e.offsetY);
    ctx.stroke();
  }
};

el.onmouseup = function() {
  isDrawing = false;
};
</script>

对此(注意这是一个片段)

<script>
 var el = document.getElementById('can1');
 var ctx = el.getContext('2d');
 var isDrawing;
 var can = document.getElementById('can1');
 var rgbColorData = ctx.getImageData(e.offsetX, e.offsetY, 1, 1).data; 

 el.onmousedown = function(e) {
  if (rgbColorData[0] == 255) {
  isDrawing = true;
  ctx.strokeStyle = "green";
  ctx.lineWidth = 4;
  ctx.lineJoin = ctx.lineCap = 'round';
  ctx.moveTo(e.offsetX, e.offsetY);
}}

似乎只要我向初始代码添加任何变量,整个绘图功能就会停止工作。我通过添加“var random = holo;”来测试这个由于某种原因,整个事情停止了。

对于任何想知道图像是用下面的代码完成的人

<script>
    var img2 = new Image();
    function test2() {
    can.width = img2.width;
    can.height = img2.height;
    ctx.drawImage(img2, 0, 0);
}
img2.src = 'http://www.hereandabove.com/cgi-bin/maze?30+30+20+5+5+0+0+0+255+255+255.jpg';
</script>

最佳答案

var rgbColorData = ctx.getImageData(e.offsetX, e.offsetY, 1, 1).data;

那时没有 e 变量。

 el.onmousedown = function(e) {

...在这里。

关于javascript - 一旦我再添加 1 个变量,函数就会停止工作?基于像素颜色为图像添加边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572696/

相关文章:

c# - 在 Asp.NET 中使用 javascript

html - 如何在 Bootstrap 中将 Logo 中心放置在我的导航栏中

javascript - 在我的案例中如何控制元素在其 parent 中的位置?

asp.net - 在哪里可以了解如何设置 ASP.NET WebParts 页面的样式?

html - CSS同时悬停div和链接

html - 为什么 <a href> 不允许作为 <figure> 的 child

javascript - 如何在最后一次出现某个字符后获取 url 中的参数

javascript - 如何使用php + html + ajax删除一行?

javascript - 在 Marionette 中从另一个应用程序调用一个应用程序的 View

css - 文本在悬停时改变不透明度时闪烁