context.drawImage работает. Но не всегда
Есть такой код:
var images = [imgPath + 'wP.png', imgPath + 'wN.png', imgPath + 'wB.png', imgPath + 'wR.png', imgPath + 'wQ.png', imgPath + 'wK.png', imgPath + 'empty.png', imgPath + 'bP.png', imgPath + 'bN.png', imgPath + 'bB.png', imgPath + 'bR.png', imgPath + 'bQ.png', imgPath + 'bK.png']; images.forEach(function (item, i, arr) { var tmp = item; arr[i] = new Image(cellWidth, cellHeight); arr[i].src = tmp; }); //... function Cell(figure, cellLitera, cellNumber) { this.figure = figure; this.cellLitera = cellLitera; this.cellNumber = cellNumber; this.draw = function() { let cellI = this.cellLitera.charCodeAt(0) - 97; let cellJ = 8 - cellNumber; ctx.drawImage(images[this.figure], 10 + cellI*cellWidth, 10 + cellJ*cellHeight); } } //... window.onload = function() { cells[0][0].figure = BLACK + ROOK; cells[1][0].figure = BLACK + KNIGHT; //... cells[6][7].figure = WHITE + KNIGHT; cells[7][7].figure = WHITE + ROOK; for (let i = 0; i < 8; ++i) { cells[i][1].figure = BLACK + PAWN; cells[i][6].figure = WHITE + PAWN; } for (let i = 0; i < 8; ++i) { for (let j = 0; j < 2; ++j) { cells[i][j].draw(); } for (let j = 6; j < 8; ++j) { cells[i][j].draw(); } } } В этом случае все шахматные фигуры рисуются. Но если последний цикл заменить на for (let i = 0; i < 8; ++i) { for (let j = 0; j < 8; ++j) { cells[i][j].draw(); } } , то вырисовываются только 2 черных фигуры в левом верхнем углу доски. В чем может быть проблема? |
msbear007,
в первом случае, вы рисуите 2 колонки слева и 2 справа, во втором все клетки поля, вероятно для клеток, где нет фигур нет данных. |
если тип фигуры empty (по умолчанию), должен рисоваться empty.png. Но нет(
|
Цитата:
|
Кажется, я понял, в чем проблема.
Просто мой тупняк. Тип фигуры по умолчанию в одном месте кода был "empty", в другом const NOFIG = 6. А я уже почти отчаялся понять, в чем проблема, на форуме аж зарегался. |
Часовой пояс GMT +3, время: 02:54. |