0

我需要有关我正在为项目工作的代码的帮助。

我需要它做的是一张一张地向用户展示图片并记住每张图片所花费的时间。最后,它应该打开网络摄像头并开始使用与图片颜色对应的粒子绘制用户肖像。我在代码的最后一部分遇到了一些问题:我无法打开网络摄像头,也不知道如何启动肖像。

这是到目前为止的代码

var faseCorrente = "intro"; // altri valori: "test" e "risultato"
var c = 0;
var sfondo = new Array(6);
var intro;

var classifica = [];

var tempi = [];
var tempoInizio;


//VAR WEBCAM
var video;
var vScale = 16;
var particles = [];
var slider;
//end var webcam 


function preload() {

  sfondo[0] = loadImage('colore0.jpg');
  sfondo[1] = loadImage('colore1.jpg');
  sfondo[2] = loadImage('colore2.jpg');
  sfondo[3] = loadImage('colore3.jpg');
  sfondo[4] = loadImage('colore4.jpg');
  sfondo[5] = loadImage('colore5.jpg');

  intro = loadImage('Introduzione.jpg');

} //close preload


function setup() {
  createCanvas(700, 550);

  noStroke();
  cursor(HAND);


} //close setup 


function draw() {
  if (faseCorrente == 'intro') {
    background(intro);
  } else if (faseCorrente == 'test') {
    background(sfondo[c]);
  } else if (faseCorrente == 'risultato') {
    //background(255);
    var durataTotale = 0;
    for (t = 0; t < tempi.length; t++) {
      durataTotale += tempi[t];
    }
    var x = 0;
    for (var pos = 0; pos < classifica.length; pos++) {
      var col = classifica[pos];
      fill(col);
      var perc = tempi[col] / durataTotale;
      var larghezza = round(perc * width);
      rect(x, 0, larghezza, height);
      x += larghezza;
    }
  }
}

//calcolo del tempo 
function keyPressed() {

  if (key == ' ') {

    if (faseCorrente == 'intro') {
      tempoInizio = millis();
      coloreCorrente = 0;
      faseCorrente = 'test';
    } else if (faseCorrente == 'test') {
      c++
      //end if
      var tempoFine = millis();
      tempi[coloreCorrente] = tempoFine - tempoInizio;
      coloreCorrente++;
      if (coloreCorrente < 6) {
        tempoInizio = millis();
      } else {
        print(tempi);
        classifica = [];
        for (pos = 0; pos < sfondo.length; pos++) {
          var tempoMax = 0;
          var coloreMax;
          for (var i = 0; i < tempi.length; i++) {
            if (!classifica.includes(i) && tempi[i] > tempoMax) {
              tempoMax = tempi[i];
              coloreMax = i;
            }
          }
          classifica[pos] = coloreMax;
        }
        print(classifica);
        faseCorrente = "risultato";
      }
    } else if (faseCorrente == 'risultato') {

     //WEBCAM
      createCanvas(640, 480);
      pixelDensity(1);
      video = createCapture(VIDEO);
      video.size(width / vScale, height / vScale);
      for (var w = 0; w < 200; w++) {
        particles[w] = new Particle(random(width), random(height));
      }
      slider = createSlider(0, 255, 127);
      background(51);
      //end webcam 

      //GRAFICA WEBCAM
      faseCorrente = video.loadPixels();
      for (var k = 0; k < particles.length; k++) {
        particles[k].update();
        particles[k].show();
      } //end grafica

      //faseCorrente = 'intro';
    }
  }
}

感谢任何可以提供帮助的人!

4

0 回答 0