我的网格生成器出现错误
Bug in my grid maker
我已经用canvas创建了一个网格生成器,到目前为止我已经有了这个:
<-- HTML -->
<body>
<canvas id="tileMap"></canvas>
<form action="#">
<input type="range" max=5 min=1 name="numberOfTilesInLineAndColunm" id="numberOfTilesInLineAndColunm">
<script src="js.js"></script>
</form>
</body>
<-- JAVASCRIPT -->
window.onload = function() {
var grid = new Grid();
var input = document.getElementById('numberOfTilesInLineAndColunm');
canvas = document.getElementById("tileMap");
context = canvas.getContext("2d");
canvas.width = 300;
canvas.height = canvas.width;
//printGrid(grid.getGridBeginning(), grid.getGridSize(), grid.getTileSize());
input.addEventListener('change', function() {
grid.setNumberOfTilesInLineAndColunm();
grid.setGridSize();
printGrid(grid.getGridBeginning(), grid.getGridSize(), grid.getTileSize());
});
}
var canvas;
var context;
function Grid() {
var gridBeginning = 0;
var tileSize = 32;
var numberOfTilesInLineAndColunm = document.getElementById('numberOfTilesInLineAndColunm').value;
var gridSize = (numberOfTilesInLineAndColunm * tileSize);
var width = 0;
var height = 0;
this.getNumberOfTilesInLineAndColunm = function() {
return numberOfTilesInLineAndColunm;
}
this.setNumberOfTilesInLineAndColunm = function() {
numberOfTilesInLineAndColunm = document.getElementById('numberOfTilesInLineAndColunm').value;
}
this.getGridBeginning = function() {
return gridBeginning;
}
this.getTileSize = function() {
return tileSize;
}
this.getGridSize = function() {
return gridSize;
}
this.setGridSize = function() {
gridSize = (numberOfTilesInLineAndColunm * tileSize);
}
}
function printGrid(beginning, gridSize, squareSize) {
context.clearRect(0, 0, canvas.width, canvas.height);
for (beginning; beginning <= gridSize; beginning += squareSize) {
// printing the horizontal lines
context.moveTo(beginning, 0);
context.lineTo(beginning, gridSize);
context.stroke();
// printing the vertical lines
context.moveTo(0, beginning);
context.lineTo(gridSize, beginning);
context.stroke();
}
}
当我增加网格中瓷砖的数量时,它工作得很好,但当我减少时,它不会改变任何东西。
这是jsfiddle:http://jsfiddle.net/p54emnmg/
我请求你帮忙调试这个东西,因为到目前为止我真的不知道错误在哪里。
您必须在printGrid函数中执行context.beginPath()
。
beginPath
声明您正在启动一组新的路径绘制命令(如moveTo、lineTo)。
在没有beginPath的情况下,每次调用context.sstroke.时,都会重新绘制以前的每个绘图命令
这意味着总是绘制较大的网格,从而遮挡所需的较小网格。
function printGrid(beginning, gridSize, squareSize) {
context.clearRect(0, 0, canvas.width, canvas.height);
// do context.beginPath();
// This starts a new path
// Without it, every previous drawing command is redrawn
context.beginPath();
for (beginning; beginning <= gridSize; beginning += squareSize) {
// printing the horizontal lines
context.moveTo(beginning, 0);
context.lineTo(beginning, gridSize);
context.stroke();
// printing the vertical lines
context.moveTo(0, beginning);
context.lineTo(gridSize, beginning);
context.stroke();
}
}
相关文章:
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- javascript:如何在antlr生成的Lexer中进行错误处理
- 生成pdf或其他非html文件时的错误处理
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- 使用AJAX在剑道网格中分组时出现Javascript错误
- 放大弹出生成“;找不到文件”;YouTube视频的错误
- Typescript Kendo UI网格列类型错误
- 在模型上生成自定义主干错误.保存成功
- 动态生成网格样式问题
- Sencha 2.0 和 Codeigniter RESTful API 生成未捕获的语法错误:意外令牌:
- Syncfusion JavaScript 网格未显示.语法和引用错误
- 生成对话框angularjs时出现DialogProvider错误
- Typescript中的Javascript错误在IE11中生成JS
- Ob_end_flush正在生成常量错误
- 正在运行'成员服务器'导致生成失败并出现EEXIST错误
- 用Javascript为QCM动态生成问题——未捕获类型错误
- '这'引用了jQuery on()中错误的动态生成元素
- 未捕获的类型错误:无法读取属性'呼叫'在webpack重新生成CommonsChunkPlugin后,共
- 使用行span和列span从网格生成HTML表(gridstack)
- 剑道网格错误-网格.选择不是函数为什么