2016-08-09 6 views
0

Ich habe ein ProcessingJS-Projekt, und ich legte es auf einer lokalen HTML-Seite. Dies ist der Code:Key Pressing in ProcessingJS funktioniert nicht

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<html> 
<script src="https://raw.githubusercontent.com/processing-js/processing-js/v1.4.8/processing.min.js"></script> 
<script type="text/processing" data-processing-target="processing-canvas"> 
size(400,400); 
background(141,141,141); 
keyPressed = function() { 
     if(key+"" === "82" || key+"" === "114"){ // "r" or "R" 
      text("Hi", 10,10); 
     } 
     return; 
}; 
</script> 
<canvas id="processing-canvas"> </canvas> 

</html> 

Aus irgendeinem Grund, wenn ich die HTML-Seite zu öffnen, kann ich sehen, alles funktioniert (wie in ich den grauen Hintergrund sehen) gut, aber es passiert nichts, wenn ich auf das ‚r‘ oder 'R'-Tasten. Warum ist das?

Antwort

0

Also habe ich es herausgefunden! Was ich tat, ist, ich wurde jedoch

keyPressed=fuction(){ 
    // CODE 
}; 

schreiben, soll ich schreiben worden ist:

void keyPressed(){ 
    // Code 
} 
0

Dies gilt nicht korrekt aussehen:

if(key+"" === "82" || key+"" === "114"){ 

Von the Processing.js reference, dass dies sein sollte:

if (key == 'r' || key == 'R') { 

Ich bin nicht sicher, warum Sie versuchen String Werte in Ihrem Code vergleichen , aber es könnte etwas mit JavaScript not having a char datatype zu tun haben:

JavaScript kennt nur nu mbers und strings, im Gegensatz zu Java, das auch über "char" -Datentypen verfügt. Das Zeichen ist ein vorzeichenloser 16-Bit-Integer-Wert, der auch ein Buchstabe sein kann (von der ISO8859-1-Codepage für die ersten 256 Zahlen und im Grunde magisch danach). Leider, da JavaScript keine Entsprechung hat, ist es sehr wahrscheinlich, dass Probleme auftreten, wenn man sich darauf verlässt, dass Zeichenvergleiche entweder Zahlen oder Buchstaben sind. Wenn Sie über Verarbeitungscode verfügen, in dem Sie Zeichen vergleichen, müssen Sie entweder Int-Casting oder String-Casting mit den Funktionen int() und str() ausführen, damit Sie explizit Datentypen vergleichen, die JavaScript verarbeiten kann mit.

Aber ich glaube nicht, dass Sie die Konvertierung richtig machen. Sie können stattdessen versuchen, die Funktionen int() oder str() (wieder the reference ist Ihr bester Freund) zu verwenden.

0

Eine Verarbeitungs Leinwand standardmäßig in Java werden muss geschrieben werden, wenn Sie es schreiben wollen in Javascript, das ist möglich mit ein wenig extra html:

<head> 
     <script src="processing.js"></script> 
    </head> 
    <body> 
     <canvas id="canvas1 width="400" height="400"></canvas> 
     <script id="script1" type="text/javascript"> 
     function sketchProc(processing) { 
      //Code goes here 
      processing.draw = function() { 
      //This is the draw function 
      } 
     } 
     var canvas = document.getElementById("canvas1"); 
     // attaching the sketchProc function to the canvas 
     var p = new Processing(canvas, sketchProc); 
     // p.exit(); to detach it 
     </script> 
    </body> 
Verwandte Themen