Почему javascript не рисует изображения на холсте? - PullRequest
4 голосов
/ 12 января 2012

У меня проблема с нанесением изображений на холст. Там нет ошибки, но по-прежнему нет изображения. Пожалуйста, просмотрите кусок кода и посмотрите, сможете ли вы увидеть то, что я не могу:

function loadPacman(posX, posY) {
    this.posX = posX;
    this.posY = posY;
    pacman = new Image();
    pacman.src="http://www.frogbug.se/pacman/img/naziman.png";
    pacman.addEventListener("load", function(){
            canvas.drawImage(pacman, this.posX, this.posY)
        }, false);
}

function loadGhost(posX, posY) {
    this.posX = posX;
    this.posY = posY;
    ghost = new Image();
    ghost.src="http://www.frogbug.se/pacman/img/ghost.png";
    ghost.addEventListener("load", function(){
            canvas.drawImage(ghost, this.posX, this.posY)
        }, false);
}

И это моя функция, которая загружается при загрузке страницы:

function onLoad() {
    var xy = document.getElementById('canvas');
    canvas = xy.getContext('2d');
    //calculate the x and y for canvas
    x = xy.width;
    y = xy.height;

    //divide the width and length of the canvas to get small cubes
    //which is 40x40
    xtile = Math.floor(x/40);
    ytile = Math.floor(y/40);

    //draw lines around the canvas
    canvas.strokeRect(0, 0, x, y);

    //the array for the map
    var map = getMapArray();

    //draw the map
    drawMap(map);
    //fillCanvas("0010", 0, 40, 40, 40);

    //load the ghost and pacman
    loadPacman(0, 0);
    loadGhost((xtile*40)-40, (ytile*40)-40);
}

Заранее спасибо! Вы можете просмотреть полный исходный код и так далее здесь: http://www.picturds.com/pacman_serious/

1 Ответ

4 голосов
/ 12 января 2012

Удалить this из this.posX и this.posY в обратном вызове загрузки. this в этом контексте является элементом изображения, а не тем же this, как при присвоении this.posX (что является window).

http://jsfiddle.net/5dkx4/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...