Обработка изображений JavaScript только в глобальных переменных? - PullRequest
1 голос
/ 16 января 2012

Я создаю игру для javascript / HTML canvas.

Я бы хотел, чтобы каждый объект игрока сохранял набор изображений, но кажется, что функции изображения могут выполняться только в глобальных переменных.

Ниже приведен один из обходных путей:

    var image;

    function loadPic(a){
        image = new Image();
        image.src = a;
        return image;
    }

Он используется как:

    pictures.push(loadPic(links[i]));

, где links - это массив строк пути.Теперь картинка (глобальный массив) не может быть скопирована или использована для чего-либо.

Я делаю что-то ужасно неправильно?https://github.com/kaninepete/Javascript-Games/blob/images/MVP.js

Ответы [ 2 ]

0 голосов
/ 16 января 2012

Я не могу воспроизвести ошибку, которую вы описываете, поэтому image локально ничего не меняет, я пробовал IE 9, Firefox 5 и Chrome.Однако я могу выдать несколько других ошибок, код работал только в Chrome до того, как я их исправил.

У вас нет доктага, мешающего работе canvas в Internet Explorer 9, поместите <!DOCTYPE HTML> в верхней части HTML-кода.document.
Вы выбираете и пытаетесь установить innerHTML несуществующего элемента: $("score").innerHTML = score;, либо удалите его, либо сделайте соответствующий элемент.
canvas.onmousedown = myDown; работает только в браузерах, которые имеют доступ к элементам быстрого доступа,вы должны использовать $("canvas").onmousedown = myDown;

Обратите внимание, что в приведенном выше коде $ определяется как сокращение для document.getElementById.

0 голосов
/ 16 января 2012

Я не видел код загрузки изображения в репозитории Github, на который вы ссылались, поэтому я не смог увидеть источник ... Что касается комментария @ Pointy выше, вот доказательство .обратите внимание, что внутри замыкания переменная img является локальной, то есть недоступна в глобальной области видимости, и код работает просто отлично.

надеюсь, это поможет!веселит.

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