我想用一个canavas构建一个简单的游戏:有一个形状,用户必须绘制它的边界,而不会离开它。我有形状,用户可以绘制,但现在我无法找到一种方法来检查用户绘制何时离开形状边界。我应该检查他绘制的每一个点的坐标。是否有可能以及如何还有其他方式?谢谢!HTML 5画布:如何检查所有线条点坐标?
function findxy(res, e) {
if (res == 'down') {
if(status == 'wait'){
status = 'run';
startX = e.clientX -canvas2.offsetLeft;
startY = e.clientY -canvas2.offsetLeft;
}
if (status == 'run'){
write = true;
currX = e.clientX -canvas2.offsetLeft;
currY = e.clientY -canvas2.offsetTop;
context2.fillStyle = 'red';
context2.fillRect(currX, currY, lineWidth, lineWidth);
}
}
if (res == 'up' || res == "out") {
if(status=='run'){
status = 'stop';
write = false;
if(won)
alert('You won!');
else
alert('You lose!');
}
}
if (res == 'move') {
if (write) {
currX = e.clientX - canvas2.offsetLeft;
currY = e.clientY - canvas2.offsetTop;
var baseData = context1.getImageData(currX, currY, 1, 1).data;
context2.fillStyle = 'red';
context2.fillRect(currX, currY, lineWidth, lineWidth);
if(baseData[3]!=255){
alert('You lose!');
status='lose';
write=false;
}
if(currX==startX && currY==startY){
won=true;
}
}
}
}
恐怕就需要两个画布这一点。当用户绘制时,你得到他绘制的位置的坐标,然后检查另一个画布是否在形状中(使用getImageData获取像素信息:如果它透明,它不在形状中)。我希望这是有道理的 –
@ JonasGrumann的另一个好主意是用路径命令绘制你的形状的轮廓,然后使用'context.isPointInPath'来命中 - 测试鼠标是移动到你定义的路径之内还是之外。 – markE