p5.js loadImage(); возвращает значение null с ошибкой «SCRIPT5007: SCRIPT5007: невозможно получить свойство «x» неопределенной или нулевой ссылки»

В настоящее время я перекодирую игру, и у меня проблемы с движком рендеринга. я думаю, что проблема в моих путях к файлам, потому что старая (и идентично закодированная) версия работает просто отлично.

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

это путь к файлам текстур: D:\programs\HTML5_JavaScript\mipmap\assets\textures\tileSetSand

это мой текущий код для импортера текстур:

tileSetSand=[];
players=[];

function setup(){

    for(i=0;i<115;i++){

        print(i);
        tileSetSand[i]=loadImage('D:/programs/HTML5_JavaScript/mipmap/assets/textures/tileSetSand/tile ('+i+').PNG');

    }

    for(i=0;i<2;i++){

        players[i]=loadImage('D:/programs/HTML5_JavaScript/mipmap/assets/textures/player ('+i+').PNG');

    }
}

это старый, работающий код

function setup() {

  tileSetSand=[];

  for(i=0;i<117;i++){

    tileSetSand[i]=loadImage('D:/maart/Documents/Processing/mipmap_local/assets/sprite ('+i+').PNG');

  }

  //loading all the images and sprites into an array

  createCanvas(1000,1000);

}

здесь я использую изображения (this.texture равен 3)

display : function(){

    if(tileSetSand[this.texture]!=null){

        image(tileSetSand[this.texture],this.xPos,this.yPos,20,20);

    }

  },

ожидаемый результат — эта функция рисует изображение, заданное this.texture, на холсте в точках xPos, yPos. Однако это не так. я понятия не имею, почему.


person Maarten Mosk    schedule 26.03.2019    source источник
comment
Unable to get property 'x' of undefined or null reference это означает, что где-то у вас есть объект, и вы пытаетесь получить доступ к x его свойству, но объект является нулевым или неопределенным. Есть ли другая часть вашего кода, где вы пытаетесь получить доступ к x?   -  person Vencovsky    schedule 26.03.2019
comment
Я думаю, что функция loadImage() вызывает эту проблему, поскольку она пытается получить доступ к свойствам изображения внутри пути к файлу, но возвращает значение null (также она выдает эту ошибку примерно два раза в секунду)   -  person Maarten Mosk    schedule 26.03.2019
comment
попробуйте изменить / на \\   -  person Vencovsky    schedule 26.03.2019
comment
похоже, что просто ничего не находит по указанному пути к файлу, потому что точно такой же код прекрасно работает для старой версии. (вы имеете в виду путь к файлу, верно?)   -  person Maarten Mosk    schedule 26.03.2019
comment
Вы пытаетесь это сделать на сервере или локальном сервере? loadImage не работает в локальной среде. Это немного отличается от обработки (где был собран ваш старый проект?). Дополнительную информацию можно найти здесь p5js.org/examples/image-load- и-display-image.html   -  person Peter Bode    schedule 26.03.2019
comment
Не могли бы вы опубликовать минимально воспроизводимый пример? Можете ли вы сузить это до одного изображения, которое не загружается должным образом?   -  person Kevin Workman    schedule 26.03.2019
comment
Кажется, что p5.js просто ОЧЕНЬ не нравится, когда я использую setup() два раза… теперь он работает, и спасибо за помощь!   -  person Maarten Mosk    schedule 28.03.2019
comment
@MaartenMosk в качестве примечания рассмотрите запуск локального веб-сервера (может быть http-модуль wamp/python, http-сервер node.js и т. д.) и использование путей относительно сервера вместо жестко запрограммированных местоположений на жестком диске. это облегчит вам задачу, когда вы решите загрузить свою работу в Интернете. Удачи   -  person George Profenza    schedule 28.03.2019


Ответы (1)


Похоже, что я использовал другую функцию setup() в другом месте проекта, и это привело к тому, что setup() здесь не работала. Я обнаружил это, когда поместил свои вызывающие переменные в мой setup(), что привело к тому, что эти переменные стали нулевыми, поскольку они не вызывались должным образом.

person Maarten Mosk    schedule 28.03.2019