Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.07.2019, 17:28
Новичок на форуме
Отправить личное сообщение для msbear007 Посмотреть профиль Найти все сообщения от msbear007
 
Регистрация: 13.07.2019
Сообщений: 3

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 черных фигуры в левом верхнем углу доски.
В чем может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2019, 17:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

msbear007,
в первом случае, вы рисуите 2 колонки слева и 2 справа, во втором все клетки поля, вероятно для клеток, где нет фигур нет данных.
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2019, 17:45
Новичок на форуме
Отправить личное сообщение для msbear007 Посмотреть профиль Найти все сообщения от msbear007
 
Регистрация: 13.07.2019
Сообщений: 3

если тип фигуры empty (по умолчанию), должен рисоваться empty.png. Но нет(
Ответить с цитированием
  #4 (permalink)  
Старый 13.07.2019, 17:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от msbear007
если тип фигуры empty (по умолчанию), должен рисоваться empty.png
где это в коде?
Ответить с цитированием
  #5 (permalink)  
Старый 13.07.2019, 18:04
Новичок на форуме
Отправить личное сообщение для msbear007 Посмотреть профиль Найти все сообщения от msbear007
 
Регистрация: 13.07.2019
Сообщений: 3

Кажется, я понял, в чем проблема.
Просто мой тупняк.
Тип фигуры по умолчанию в одном месте кода был
"empty"
, в другом
const NOFIG = 6
.
А я уже почти отчаялся понять, в чем проблема, на форуме аж зарегался.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
контент из XMLHttpRequest response с помощью innerHTML не работает m4ybe Events/DOM/Window 9 24.01.2018 14:35
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Не всегда работает onchange Namolem Events/DOM/Window 3 18.04.2010 14:53