p5. js проблемы с веб-редактором, когда не определен двумерный массив, и если l oop вызывает зависание - PullRequest
0 голосов
/ 19 апреля 2020

edit: я думаю, что я исправил бит 2d-массива ... Я забыл скобки () edit number 2: if не работал, потому что я использовал настройку одинарного знака = j для 0 каждый l oop ( : использование == решило проблему. о, радость кодирования!

первый пост.

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

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

Я прокомментировал проблему строк в нижней части кода. Функция if вызывает зависание p5. js, массив 2d, похоже, не определен, хотя я помещаю массив sh в пустой массив.

помощь?

   let stringNumber = 6;
let fretNumber = 22;
let notes = ["a", "a#", "b", "c", "c#", "d", "d#", "e", "f", "f#", "g", "g#"]
let baseNotes = [7, 0, 5, 10, 2, 7];
let fretboardWidth = 0;
let fretboardHeight = 0;
function setup() {
  createCanvas(600, 800);
}

function draw() {
  background(0,100,100);
  fretboardWidth = width - 100;
  fretboardHeight = height -100
  renderFrets();
  renderStrings();
  renderCircles();
  createNotes();
}

function renderFrets() {
  for(i=1; i <= fretNumber; i++){
   line(0, fretboardHeight / (fretNumber + 1) * i, fretboardWidth, fretboardHeight / (fretNumber + 1) * i);
  }
}

function renderStrings() {
  for(i=1; i <= stringNumber; i++){
   line(fretboardWidth / (stringNumber +1) * i, 0, fretboardWidth / (stringNumber +1) * i, fretboardHeight); 
  }
}

function renderCircles() {
  for(i = 1; i <= stringNumber; i++){
   for(j = 1; j <= fretNumber; j++){
     circle(fretboardWidth / (stringNumber+1) * i, fretboardHeight / (fretNumber+1) * j, 20); 
   }
  }
}

function createNotes() {
 let strings = [];
 let gstring = [];
  for(i=0; i < stringNumber; i++){
    for(j=0; j <= fretNumber; j++) {
      gstring.push(notes[(baseNotes[i] + j) % 12]);
    //  if(j=0){
     //   text(gstring[j], fretboardWidth / 7 * (i+1) - 4, fretboardHeight / (fretNumber+1) * j + 3);
     // }
       // else{
          text(gstring[j], fretboardWidth / 7 * (i+1) - 4, fretboardHeight / (fretNumber+1) * j + 3);
       // }

    }
    strings.push[gstring];
    gstring = [];  
  }
  text(strings[0][0], fretboardWidth / 7 * (i+1) - 4, 10);
}

1 Ответ

0 голосов
/ 19 апреля 2020

Исправлено!

Требуется двойное значение = вход в функцию if для проверки того, что значения равны, а не установка значения для создания бесконечного цикла. Забытые нормальные скобки при добавлении в массив.

...