Eine kleine Ergänzungsfrage: Was müsste man machen, um auf den Server auch per Handy aus zugreifen zukönnen, wenn man nicht im selben Netz ist?

...zur Antwort

Es funktioniert!!!! Ich habe mal ein bisschen in den Tiefen meines Computers gewühlt, und musste in den Einstellungen nur festlegen, dass mein Computer in privaten Netzwerken sichtbar ist, was komischer weise deaktiviert war. Ich bedanke mich bei euch für eure Mühen und eure Zeit :)

...zur Antwort
Wie kann ich mit node.js andere scripte einbinden?

Ich will mit JavaScript für den Raspberry Pi ein Programm schreiben. Für das Programm möchte ich die Bibliothek p5.speech nehmen. Um das Skript dann auf dem Raspberry Pi laufen zu lassen, benutze ich Node.js. Leider bin ich relativ neu in Node.js und deswegen meine Frage: Wie kann ich diese Bibliothek in mein Skript einbinden?

Mein Skript besteht gerade erst einmal aus diesen bescheidenen zwei Zeilen:

const lib = require('./p5.speech');
var myVoice = new lib.p5.Speech();

und im selben Ordner befindet sich auch die p5.speech.js-Datei.

Das hier ist der Code bis zum Ende von p5.Speech(); :

(function (root, factory) {
  if (typeof define === 'function' && define.amd)
    define('p5.speech', ['p5'], function (p5) {( factory(p5)); });
  else if (typeof exports === 'object') {
    //factory(require('../p5'));
  }
  else {
    factory(root['p5']);
  }
}(this, function (p5) {
  // ============================================================================
  //             p5.Speech
  // ============================================================================
  /*    Base class for a Speech Synthesizer
    @class p5.Speech   * @constructor   */
  p5.Speech = function(_dv) {
    this.synth = window.speechSynthesis;
    this.utterance = new SpeechSynthesisUtterance();
    this.isLoaded = 0; // do we have voices yet?

    // do we queue new utterances upon firing speak()
    // or interrupt what's speaking:
    this.interrupt = false;

    // callback properties to be filled in within the p5 sketch
    // if the author needs custom callbacks:
    this.onLoad;
    this.onStart;
    this.onPause;
    this.onResume;
    this.onEnd;

    this.voices = [];

    // first parameter of constructor is an initial voice selector
    this.initvoice;

    if (_dv !== undefined)
      this.initvoice=_dv;

    var that = this;
    window.speechSynthesis.onvoiceschanged = function() {
      if (that.isLoaded == 0) {
        that.voices = window.speechSynthesis.getVoices();
        that.isLoaded = 1;
        console.log("p5.Speech: voices loaded!");

        if (that.initvoice!=undefined) {
          that.setVoice(that.initvoice);
          console.log("p5.Speech: initial voice: " + that.initvoice);
        }

        if (that.onLoad != undefined)
          that.onLoad();

        that.utterance.onstart = function(e) {
          if (that.onStart != undefined)
            that.onStart(e);
        };
        that.utterance.onpause = function(e) {
          if (that.onPause != undefined)
            that.onPause(e);
        };
        that.utterance.onresume = function(e) {
          if (that.onResume != undefined)
            that.onResume(e);
        };
        that.utterance.onend = function(e) {
          if (that.onEnd != undefined)
            that.onEnd(e);
        };
      }
    };
  };   // end p5.Speech constructor

Ich bekomme aber immer die Fehlermeldung:

"cannot read property 'Speech' of undefined"

Wie kann ich diese p5.Speech-Funktion von meinem Skript aufrufen?

...zum Beitrag

Dankeschön :)

...zur Antwort
Und das der Code von Script.js:

/*-----------------*/
/*   Skript   */
/*-----------------*/
var map = "";
var xhr;
var splice;
var txtTile = "";
var tileToDraw = 0;
var img, imgX = 0, imgY = 0;
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');

txt2Array("map.txt");
//drawTable();
setTimeout(function () {
 drawMap(map);
}, 0);




/*-----------------*/
/*  Funktionen  */
/*-----------------*/


function drawTable() {
 context.strokeStyle = "green";
 for (var x = 0; x < canvas.width; x += 32) {
  context.beginPath();
  context.moveTo(x, 0);
  context.lineTo(x, canvas.height);
  context.stroke();
 }
 for (var y = 0; y < canvas.height; y += 32) {
  context.moveTo(0, y);
  context.lineTo(canvas.width, y);
  context.stroke();
 }

};

function txt2Array(datei) {
 var URL = datei;
 (function loadTxt() {
  ajaxRequest(URL, function(xhr) {
   map = xhr.responseText;
  });
 })();
 function ajaxRequest(url, callback) {
  if (typeof XMLHttpRequest !== 'undefined') xhr = new XMLHttpRequest();
  else {
   var versions = ["MSXML2.XmlHttp.5.0",
   "MSXML2.XmlHttp.4.0",
   "MSXML2.XmlHttp.3.0",
   "MSXML2.XmlHttp.2.0",
   "Microsoft.XmlHttp"
  ]
  for (var i = 0, len = versions.length; i < len; i++) {
   try {
    xhr = new ActiveXObject(versions[i]);
    break;
   } catch (e) {}
  }
 }
 xhr.onreadystatechange = ensureReadiness;
 function ensureReadiness() {
  if (xhr.readyState < 4) {
   return;
  }
  if (xhr.status !== 200) {
   return;
  }
  if (xhr.readyState === 4) {
   callback(xhr);
  }
 }
 xhr.open('GET', url, true);
 xhr.send('');
 }
}

function drawMap(string) {
 var test = 0;
 checkKomma();
 function checkKomma() {
  var firstChar = string.charAt(test);
  if (firstChar !== "," && firstChar !== ";" && firstChar !== ".") {
   test++;
   txtTile += firstChar;
   checkKomma();
  } else if (firstChar == ",") {
   firstChar = "";
   tileToDraw = txtTile;
   txtTile = "";
   test++;
   console.log(tileToDraw);
   switchTile(tileToDraw);
   context.drawImage(img, imgX, imgY);
   imgX += 32;
   checkKomma();
  } else if (firstChar == ";") {
   firstChar = "";
   tileToDraw = txtTile;
   txtTile = "";
   test++;
   console.log(tileToDraw);
   switchTile(tileToDraw);
   context.drawImage(img, imgX, imgY);
   imgX = 0;
   imgY += 32;
   checkKomma();
  } else if (firstChar == ".") {
   firstChar = "";
   tileToDraw = txtTile;
   txtTile = "";
   test++;
   console.log(tileToDraw);
   switchTile(tileToDraw);
   context.drawImage(img, imgX, imgY);
  }
 }

 function switchTile(wert) {
  switch (wert) {
   case "23":
   img = document.getElementById('tile23');
   break;
   case "24":
   img = document.getElementById('tile24');
   break;
   case "25":
   img = document.getElementById('tile25');
   break;
   case "26":
   img = document.getElementById('tile26');
   break;
   case "27":
   img = document.getElementById('tile27');
   break;
   case "28":
   img = document.getElementById('tile28');
   break;
   case "29":
   img = document.getElementById('tile29');
   break;
   case "30":
   img = document.getElementById('tile30');
   break;
   case "31":
   img = document.getElementById('tile31');
   break;
   case "32":
   img = document.getElementById('tile32');
   break;
   case "33":
   img = document.getElementById('tile33');
   break;
   case "34":
   img = document.getElementById('tile34');
   break;
   case "35":
   img = document.getElementById('tile35');
   break;
   case "36":
   img = document.getElementById('tile36');
   break;
   case "37":
   img = document.getElementById('tile37');
   break;
   case "38":
   img = document.getElementById('tile38');
   break;
   case "39":
   img = document.getElementById('tile39');
   break;
   case "40":
   img = document.getElementById('tile40');
   break;
   case "41":
   img = document.getElementById('tile41');
   break;
   case "42":
   img = document.getElementById('tile42');
   break;
   case "43":
   img = document.getElementById('tile43');
   break;
   case "44":
   img = document.getElementById('tile44');
   break;
   case "45":
   img = document.getElementById('tile45');
   break;
   case "46":
   img = document.getElementById('tile46');
   break;
   case "47":
   img = document.getElementById('tile47');
   break;
   case "48":
   img = document.getElementById('tile48');
   break;
   case "69":
   img = document.getElementById('tile69');
   break;
   case "70":
   img = document.getElementById('tile70');
   break;
   case "71":
   img = document.getElementById('tile71');
   break;
  }
 }
}
...zur Antwort

Hier der Code meiner index.html Datei:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
 <canvas id="canvas" width="1344" height="480" style="background-color: black"></canvas>
 <script src="https://code.jquery.com/jquery-latest.js"></script>

 <script src="script.js"></script>
 <img src="tiles/23.png" id="tile23" style="display: none" width="32" height="32">
 <img src="tiles/24.png" id="tile24" style="display: none" width="32" height="32">
 <img src="tiles/25.png" id="tile25" style="display: none" width="32" height="32">
 <img src="tiles/26.png" id="tile26" style="display: none" width="32" height="32">
 <img src="tiles/27.png" id="tile27" style="display: none" width="32" height="32">
 <img src="tiles/28.png" id="tile28" style="display: none" width="32" height="32">
 <img src="tiles/29.png" id="tile29" style="display: none" width="32" height="32">
 <img src="tiles/30.png" id="tile30" style="display: none" width="32" height="32">
 <img src="tiles/31.png" id="tile31" style="display: none" width="32" height="32">
 <img src="tiles/32.png" id="tile32" style="display: none" width="32" height="32">
 <img src="tiles/33.png" id="tile33" style="display: none" width="32" height="32">
 <img src="tiles/34.png" id="tile34" style="display: none" width="32" height="32">
 <img src="tiles/35.png" id="tile35" style="display: none" width="32" height="32">
 <img src="tiles/36.png" id="tile36" style="display: none" width="32" height="32">
 <img src="tiles/37.png" id="tile37" style="display: none" width="32" height="32">
 <img src="tiles/38.png" id="tile38" style="display: none" width="32" height="32">
 <img src="tiles/39.png" id="tile39" style="display: none" width="32" height="32">
 <img src="tiles/40.png" id="tile40" style="display: none" width="32" height="32">
 <img src="tiles/41.png" id="tile41" style="display: none" width="32" height="32">
 <img src="tiles/42.png" id="tile42" style="display: none" width="32" height="32">
 <img src="tiles/43.png" id="tile43" style="display: none" width="32" height="32">
 <img src="tiles/44.png" id="tile44" style="display: none" width="32" height="32">
 <img src="tiles/45.png" id="tile45" style="display: none" width="32" height="32">
 <img src="tiles/46.png" id="tile46" style="display: none" width="32" height="32">
 <img src="tiles/47.png" id="tile47" style="display: none" width="32" height="32">
 <img src="tiles/48.png" id="tile48" style="display: none" width="32" height="32">
 <img src="tiles/69.png" id="tile69" style="display: none" width="32" height="32">
 <img src="tiles/70.png" id="tile70" style="display: none" width="32" height="32">
 <img src="tiles/71.png" id="tile71" style="display: none" width="32" height="32">
</body>
</html>
...zur Antwort
Wie kann man Bilder mit p5.js richitg anzeigen?

Ich habe ein Programm,welches erst einmal rote Rechtecke in form von einem großen Rechteck zeichnet. Dann wollte ich,das auf jedes Rechteck(40 Pixel40 Pixel) ein genau so großes bild(auch 40 Pixel40 Pixel) gezeichnet wird. Dies habe ich mit p5 probiert, da es mir dort am leichtesten vorkam, und ich p5.js in meinem Projekt eh schon "installiert" habe. Da dies aber nicht klappte und die Seite stunden lang geladen hatte, habe ich bei der for-schleife , die die Bilder zeichnet, die anzahl der Bilder,welche gemalt werden sollen auf 3 verringert. Trotzdem funktioniert es nicht. Hier meine Dateien:

Hier index .html:


<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.14/p5.js"></script>

  <script src="sketch.js"></script>   <script src="bloecke.js"></script>   <style></style>  </head>  <body>  </body> </html>

Hier sketch.js:

var canvasW = 1300;
var canvasH = 640;

function setup() {  img = loadImage("block.jpg");  createCanvas(canvasW, canvasH);  bloecke();  bilderZeigen();  window.addEventListener("load", bilderZeigen); }

// function imagesload() { //  img = loadImage("block.jpg"); // }

function draw() {
 //background(0);
 // var rectX = 320;
 // var rectY = 240;
 // var rectW = 80;
 // var rectH = 80;
 // if (mouseIsPressed) {
 //  if (mouseX > rectX-rectW && mouseX < rectX+rectW && mouseY > rectY-rectH && mouseY < rectY+rectH) {
 //  fill(175);
 // }
 // } else {
 //  fill(255);
 // }
 // rectMode(RADIUS)
 // rect(rectX, rectY, rectW, rectH);
 }

Und als letztes:

var alleBloecke = [];
var spalten = canvasW / 10;
var zeilen = canvasH / 10;
var i = 0;
var y = 0;
var x = -20;

function bloecke() {  // image(img, 45, 68); console.log("h"); for (var j = 0; j < spalten; j++) { while (i < zeilen) {  x = x + 40;  i = i + 1;  //alert("x:"+ x + "y:" + y)  strokeWeight(1);  stroke(51);  fill('red');  var rectangle = new Rechteck(x, y, 40, 40);  alleBloecke.push(rectangle); } x = -20; i = 0; //alert(i); y = y + 40; } }

function Rechteck(x, y, width, height) {  this.x = x;  this.y = y;  this.width = width;  this.height = height;  rect(this.x, this.y, this.width, this.height); }

function bilderZeigen() {
 alert("ja");
for (var z = 0; z < 3; z++) {
 image(img, alleBloecke[z].x, alleBloecke[z].y);
}
};

...zum Beitrag

Das komische ist auserdem, das wenn die seite geladen hat, nur die rechtecke,aber keine bilder zu sehen sind.Wenn ich aber die for-schleife aus bilderZeigen() in die Konsole eintippe,funktioniert alles

...zur Antwort
Wie kann man Bilder mit p5.js richitg anzeigen?

Ich habe ein Programm,welches erst einmal rote Rechtecke in form von einem großen Rechteck zeichnet. Dann wollte ich,das auf jedes Rechteck(40 Pixel40 Pixel) ein genau so großes bild(auch 40 Pixel40 Pixel) gezeichnet wird. Dies habe ich mit p5 probiert, da es mir dort am leichtesten vorkam, und ich p5.js in meinem Projekt eh schon "installiert" habe. Da dies aber nicht klappte und die Seite stunden lang geladen hatte, habe ich bei der for-schleife , die die Bilder zeichnet, die anzahl der Bilder,welche gemalt werden sollen auf 3 verringert. Trotzdem funktioniert es nicht. Hier meine Dateien:

Hier index .html:


<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.14/p5.js"></script>

  <script src="sketch.js"></script>   <script src="bloecke.js"></script>   <style></style>  </head>  <body>  </body> </html>

Hier sketch.js:

var canvasW = 1300;
var canvasH = 640;

function setup() {  img = loadImage("block.jpg");  createCanvas(canvasW, canvasH);  bloecke();  bilderZeigen();  window.addEventListener("load", bilderZeigen); }

// function imagesload() { //  img = loadImage("block.jpg"); // }

function draw() {
 //background(0);
 // var rectX = 320;
 // var rectY = 240;
 // var rectW = 80;
 // var rectH = 80;
 // if (mouseIsPressed) {
 //  if (mouseX > rectX-rectW && mouseX < rectX+rectW && mouseY > rectY-rectH && mouseY < rectY+rectH) {
 //  fill(175);
 // }
 // } else {
 //  fill(255);
 // }
 // rectMode(RADIUS)
 // rect(rectX, rectY, rectW, rectH);
 }

Und als letztes:

var alleBloecke = [];
var spalten = canvasW / 10;
var zeilen = canvasH / 10;
var i = 0;
var y = 0;
var x = -20;

function bloecke() {  // image(img, 45, 68); console.log("h"); for (var j = 0; j < spalten; j++) { while (i < zeilen) {  x = x + 40;  i = i + 1;  //alert("x:"+ x + "y:" + y)  strokeWeight(1);  stroke(51);  fill('red');  var rectangle = new Rechteck(x, y, 40, 40);  alleBloecke.push(rectangle); } x = -20; i = 0; //alert(i); y = y + 40; } }

function Rechteck(x, y, width, height) {  this.x = x;  this.y = y;  this.width = width;  this.height = height;  rect(this.x, this.y, this.width, this.height); }

function bilderZeigen() {
 alert("ja");
for (var z = 0; z < 3; z++) {
 image(img, alleBloecke[z].x, alleBloecke[z].y);
}
};

...zum Beitrag

Hab was falsch kopiert,im sketch wird bilderZeigen nur bei onload ausgeführt,des bilderzeigen() davor einfach nicht beachten

...zur Antwort