Inhaltsverzeichnis:

Interessante Anleitungen zur Verarbeitungsprogrammierung für Designer - Laden und Ereignis von Medien - Gunook
Interessante Anleitungen zur Verarbeitungsprogrammierung für Designer - Laden und Ereignis von Medien - Gunook

Video: Interessante Anleitungen zur Verarbeitungsprogrammierung für Designer - Laden und Ereignis von Medien - Gunook

Video: Interessante Anleitungen zur Verarbeitungsprogrammierung für Designer - Laden und Ereignis von Medien - Gunook
Video: [MME SS2020] Bias-Lighting mit Video- und Canvas-Element 2024, Juni
Anonim
Interessante Anleitungen zur Verarbeitungsprogrammierung für Designer – Medien laden und Ereignis
Interessante Anleitungen zur Verarbeitungsprogrammierung für Designer – Medien laden und Ereignis

Bei der Verarbeitung können viele externe Daten geladen werden, von denen drei sehr häufig verwendet werden. Sie sind Bild, Audio und Video getrennt.

In diesem Kapitel werden wir ausführlich darüber sprechen, wie Sie Audio und Video laden und mit Ereignissen kombinieren. Am Ende können Sie Ihre eigene Musiktastatur oder Musikpalette erstellen.

Schritt 1: Bild lesen

Bevor wir beginnen, werfen wir einen Blick zurück auf die Methode zum Laden von Bildern.

Schritt 2: Bildbezogene Funktionen

Bevor wir diese Funktionen verwenden, müssen wir über PImage ein Bildobjekt erstellen. Dann können wir diese Funktionen verwenden, um alle Arten von Bildeigenschaften zu definieren.

Vergessen Sie nicht, Ihre Bildquellen in einer Datendatei zu speichern, bevor Sie Ihr Programm ausführen.

Schritt 3: Musik laden, abspielen und stoppen

Im Folgenden beginnen wir, Ihnen die Anrufung der Musik offiziell vorzustellen. Ähnlich wie beim Laden von Bildern müssen Sie zu Beginn ein Audioobjekt deklarieren. Sie können sich auf das Beispiel unten für die tatsächliche Grammatik beziehen.

Codebeispiel (10-1):

[cceN_cpp theme="dawn"] import processing.sound.*;

SoundFile-Sound;

Leere Einrichtung () {

Größe (640, 360);

Hintergrund(255);

sound = new SoundFile (dies, "1.mp3");

}

Leere zeichnen () {

}

Leere TastePressed() {

//Ton abspielen

if (Schlüssel == 'p') {

sound.play();

}

// Ton stoppen

if (Schlüssel == 's') {

sound.stop();

}

} [/cceN_cpp]

Vorbereitung:

Die Verarbeitung selbst trägt keine Soundbibliothek. Sie müssen es selbst herunterladen. Bevor Sie Ihren Code schreiben, sollten Sie also die folgenden Vorbereitungen treffen.

Bibliothek zur Verarbeitung hinzufügen. Hier ist die gängige Praxis. Wählen Sie in der Menüleiste "Tool" -- "Tool hinzufügen" und wechseln Sie dann zu "Bibliotheken". Geben Sie die Schlüsselwörter der Bibliothek in die Suchspalte ein, damit Sie sie direkt herunterladen und installieren können.

Wenn wir diese Funktion jedoch in unserem Heimatland (in China) verwenden, können wir sie nicht herunterladen, indem wir eine direkte Verbindung zum Internet herstellen. Wir müssen VPN starten. Auch wenn wir damit beginnen, wird es instabile Bedingungen geben. Sie müssen also geduldig sein, um es mehrmals zu versuchen. Dies ist die bequemste Lademethode. Wenn Sie nicht installieren können, müssen Sie manuell von der offiziellen Website herunterladen. (https://processing.org/reference/libraries/) Da die manuelle Installationsmethode sehr kompliziert ist, werden wir sie im anderen Kapitel weiter besprechen.

Code-Erklärung:

Die Soundbibliothek kann nach Abschluss der Vorbereitung ordnungsgemäß funktionieren. Bearbeiten Sie den obigen Code, klicken Sie auf AUSFÜHREN, dann wird er ausgeführt. Drücken Sie die Taste "P", um Musik abzuspielen, "S", um die Musik zu stoppen.

Wenn es an das Programm gewöhnt ist, müssen wir es zuerst laden. Am Anfang müssen wir noch einen Satz "import processing.sound.*" hinzufügen. "importieren" ist das Schlüsselwort und bedeutet Laden wörtlich. Fügen Sie den Bibliotheksnamen hinter "import" hinzu, dann wird die Bibliothek geladen. Der Schwanz folgt normalerweise einem "*", sodass alle bibliotheksbezogenen Klassen in das Programm geladen werden, ohne sie einzeln manuell hinzufügen zu müssen.

Im zweiten Satz hat " SoundFile sound; " ein Audioobjekt deklariert. SoundFile ist PImage ähnlich.

Im Funktions-Setup wird " sound = new SoundFile(this, "1.mp3"); " verwendet, um ein Objekt zu erstellen und seinen Lesepfad zu definieren. Hier haben wir tatsächlich bereits begonnen, eine neue Konzeptklasse zu verwenden. Im Moment diskutieren wir es nicht tief. Wir müssen nur wissen, dass es sich um eine feste Schreibmethode handelt und der letzte Parameter zum Füllen der Adresse der Musikquelle dient.

Unter den keyPressed()-Ereignissen funktionieren "sound.play()" und "sound.stop()" relativ als Effekt von Play und Stop. "." in der Mitte zeigt eine Member-Funktion an, die Play und Stop zu Audio-Objekten gehören. Wir können die Memberfunktion als die im Objekt enthaltene Funktion betrachten. Es gehört zu diesem zuvor definierten Objekt. Wenn wir später mehrere Audioobjekte abspielen müssen, müssen wir nur ".play()" hinter dem relativen Variablennamen hinzufügen.

Audioquellen müssen in einer Datendatei unter dem gleichen Katalog wie Sketchfile (mit PDE-Suffix) gespeichert werden. Wenn keine vorhanden ist, können Sie manuell eine erstellen.

Vergessen Sie nicht, die Funktion Draw zu schreiben. Obwohl Sie keine Grafiken gezeichnet haben, ist es notwendig, Musik erfolgreich abzuspielen.

Das obige Verfahren scheint ziemlich komplex zu sein, aber Sie müssen nur einige Codesätze hinzufügen, dann können Sie die Wiedergabefunktion realisieren. Es ist sehr bequem.

Die Verarbeitung unterstützt gängige Audioformate wie mp3, wav, ogg usw.

Schritt 4: Musikgeschwindigkeitssteuerung

Die folgenden Beispiele werden sehr interessant werden. Die Verarbeitung hat einige Funktionen bereitgestellt, die die Musikwiedergabegeschwindigkeit steuern können. Gleichzeitig ändern sich die Töne mit der Musikwiedergabegeschwindigkeit. Wenn wir die Maus zur Steuerung verwenden, wird ein sehr psychedelischer Effekt erzeugt.

Video-Website:

Codebeispiel (10-2):

[cceN_cpp theme="dawn"] import processing.sound.*;

SoundFile-Sound;

Leere Einrichtung () {

Größe (640, 360);

Hintergrund(255);

sound = new SoundFile (dies, "1.mp3");

}

Leere zeichnen () {

Float-Geschwindigkeit = MausX/(Float)Breite * 3;

Schallgeschwindigkeit (Geschwindigkeit);

float vol = mouseY/(float)height * 4;

sound.amp(vol);

}

Leere TastePressed() {

//Ton abspielen

if (Schlüssel == 'p') {

sound.play();

}

// Ton stoppen

if (Schlüssel == 's') {

sound.stop();

}

} [/cceN_cpp]

Code-Erklärung:

Die Funktion.rate() steuert die Geschwindigkeit der Audiowiedergabe. Der Wert in Klammern bestimmt die schnelle und langsame Wiedergabegeschwindigkeit. Wenn der Wert 1 ist, ist die Wiedergabegeschwindigkeit normal. Wenn es über 1 liegt, dann beschleunigen Sie; während es unter 1 ist, dann verlangsamen.

Die Funktion.amp() steuert die Audiolautstärke. Der Wert in Klammern bestimmt den Lautstärkewert. Bei 1 ist der Lautstärkewert normal. Wenn es über 1 liegt, erhöhen Sie die Lautstärke; während es unter 1 ist, dann verringern Sie die Lautstärke.

Hier haben wir zwei lokale Variablen speed und vol als zu ladende Parameter eingebaut. Daher ändert die horizontale Koordinate der Maus den Musikton und die vertikale Koordinate ändert die Musiklautstärke.

Schritt 5: Videowiedergabe und Stopp

Bei der Verarbeitung ähnelt das Laden von Videos dem Laden von Audio. Sie müssen zuerst die Videobibliothek herunterladen. (https://processing.org/reference/libraries/video/index.html)

Codebeispiel (10-3):

[cceN_cpp theme="dawn"] import processing.video.*;

Film mov;

Leere Einrichtung () {

Größe (640, 360);

Hintergrund(0);

mov = neuer Film (dieser, "1.mov");

}

void movieEvent(Filmfilm) {

mov.read();

}

Leere zeichnen () {

Bild(mov, 0, 0, 640, 360);

}

Leere TasteGedrückt() {

if (Schlüssel == 'p') {

mov.play();

}

if (Schlüssel == 's') {

mov.stop();

}

if (Schlüssel == 'd') {

mov.pause();

}

} [/cceN_cpp]

Video-Screenshot:

Code-Erklärung:

Der erste Satz " import processing.video.*; " wird verwendet, um die Videobibliothek zu laden.

Der zweite Satz " Movie mov; " wird verwendet, um ein Videoobjekt zu deklarieren. Darunter ähnelt die Funktion von " Movie " der von PImage.

Im Funktions-Setup besteht der Effekt von " mov = new Movie(this, "1.mov"); " darin, ein Objekt zu erstellen und seinen Lesepfad zu definieren. Der letzte Parameter ist mit der Adresse der Videoquelle auszufüllen.

Hinter der Einrichtung steht movieEvent für ein Videoereignis. Es wird verwendet, um Videoinformationen zu aktualisieren und zu lesen. "mov.read()" im Ereignis bedeutet lesen.

Abgesehen von der Anzeige von Bildern kann das Funktionsbild auch Videos anzeigen. Wir können ein Videoobjekt als dynamisches Bild betrachten. Als ersten Parameter tragen wir den Variablennamen des Videoobjekts ein. Der zweite und dritte Parameter sind die vom Video gezeichneten horizontalen und vertikalen Koordinaten. Der vierte und fünfte Parameter bestimmen die Länge und Breite der Videoanzeige.

Die Funktion.play() bedeutet spielen. Die Funktion.stop() bedeutet Stop und setzt das Video zurück. Die Funktion.pause() bedeutet Pause. Es unterbricht das aktuelle Abspielen, das fortgesetzt wird, bis die Funktion.play() aufgerufen wird.

Schritt 6: Videogeschwindigkeitssteuerung

Codebeispiel (10-4):

[cceN_cpp theme="dawn"] import processing.video.*;

Film mov;

Leere Einrichtung () {

Größe (640, 360);

Hintergrund(0);

mov = neuer Film (dieser, "transit.mov");

}

void movieEvent(Filmfilm) {

mov.read();

}

Leere zeichnen () {

image(mov, 0, 0, Breite, Höhe);

float newSpeed = mouseX/(float)width * 4;

mov.speed (newSpeed);

}

Leere TastePressed() {

if (Schlüssel == 'p') {

mov.play();

}

if (Schlüssel == 's') {

mov.stop();

}

if (Schlüssel == 'd') {

mov.pause();

}

}

[/cceN_cpp]

Code-Erklärung:

Die Funktion.speed() kann verwendet werden, um die Geschwindigkeit der Videowiedergabe zu steuern. Wenn der Parameterwert 1 ist, ist die Wiedergabegeschwindigkeit normal. Wenn der Wert über 1 liegt, beschleunigen Sie; während es unter 1 ist, dann verlangsamen.

Da wir die lokale Variable newSpeed erstellt und in die Funktion setSpeed() importiert haben, beeinflusst die Mauskoordinate direkt die Videowiedergabegeschwindigkeit.

Weitere Beispiele zu Video finden Sie unter Bibliotheken – Video in der Fallbibliothek.

Schritt 7: Verarbeitung allgemeiner Ereignisse

Zuvor haben wir nur das Ereignis keyPressed() eingeführt. Es wird ausgelöst, nachdem die Tastatur gedrückt wurde. Im Folgenden stellen wir Ihnen weitere gängige Ereignisse im Bereich Processing vor.

Die Verwendung der oben genannten Ereignisse ist ähnlich wie bei keyPressed. Sie haben keine Sequenz beim Schreiben von Code. Mit anderen Worten, unabhängig davon, welches Ereignis Sie vor oder hinter dem Funktions-Setup platziert haben, erhalten Sie das gleiche Ergebnis. Die Ausführungsreihenfolge bezieht sich nur auf die auslösende Bedingung des Ereignisses selbst. Nur wenn die Bedingung erfüllt ist, wird es ausgeführt. Die oben genannten Ereignisse sind alle sehr einfach zu verstehen. Sie müssen nur ein kleines Experiment durchführen, dann können Sie ihre Verwendungen schnell erfassen.

Ereignisablauf

Wir können ein Beispiel verwenden, um die Ausführungsreihenfolge von Ereignissen zu kennen.

Code-Beispiel (10-5):

[cceN_cpp theme="dawn"] void setup() {

FrameRate(2);

println(1);

}

Leere zeichnen () {

println(2);

}

Leere MausGedrückt () {

println(3);

}

Leere MausMoved() {

println(4);

}

void mouseReleased() {

println(5);

}

Leere TasteGedrückt() {

println(6);

}

void keyReleased() {

println(7);

} [/cceN_cpp]

Code-Erklärung:

Im Funktionssetup hat die Funktion frameRate() die Betriebsgeschwindigkeit des Programms auf 2 Bilder pro Sekunde eingestellt. Das Verringern der Framerate kann uns helfen, die Ausgabe in der Konsole zu beobachten, falls ausgelöste Ereignisse sofort von neuen Daten nach hinten gewischt werden.

Versuchen Sie, Ihre Maus zu bewegen, klicken Sie mit der Maus, lassen Sie die Maus los und beobachten Sie das Ausgabeergebnis. Lernen Sie die Ereignisausführungsreihenfolge durch println kennen.

Es lohnt sich, darauf zu achten, dass Zeichenfunktionen nicht in andere Ereignisse außer der Funktion draw geschrieben werden können oder nicht angezeigt werden können. Wenn wir das Ein- und Ausblenden von Grafikkomponenten durch Ereignisse wie keyPressed steuern möchten, können wir erwägen, die Variable bool als medium zu erstellen.

Die Ereignisse werden der Reihe nach ausgeführt. Erst nachdem der gesamte Code im aktuellen Ereignis implementiert wurde, wird der Code im nächsten Ereignis ausgeführt.

Schritt 8: Umfassendes Beispiel - Musiktastatur

In Kombination mit den neu erfassten Ereignissen können wir unserem Programm neue Interaktionen hinzufügen. Als nächstes können wir mit nur wenigen Minuten eine Musiktastatur problemlos analog machen.

Video-Website:

Codebeispiel (10-6):

[cceN_cpp theme="dawn"] import processing.sound.*;

SoundFile Sound1, Sound2, Sound3, Sound4, Sound5;

boolescher Wert key1, key2, key3, key4, key5;

Leere Einrichtung () {

Größe (640, 360);

Hintergrund(255);

keinStroke();

sound1 = new SoundFile (dies, "do.wav");

sound2 = new SoundFile (dies, "re.wav");

sound3 = new SoundFile (dies, "mi.wav");

sound4 = new SoundFile(diese, "fa.wav");

sound5 = new SoundFile (dies, "so.wav");

}

Leere zeichnen () {

Hintergrund (255, 214, 79);

rectMode (MITTE);

Schwimmer w = Breite * 0,1;

Schwimmer h = Höhe * 0,8;

wenn (Taste1) {

füllen(255);

} anders {

füllen (238, 145, 117);

}

Rechteck (Breite/6, Höhe/2, B, H);

wenn (Schlüssel2) {

füllen(255);

} anders {

füllen (246, 96, 100);

}

rect(Breite/6 * 2, Höhe/2, B, H);

wenn (Taste3) {

füllen(255);

} anders {

füllen (214, 86, 113);

}

Rechteck (Breite/6 * 3, Höhe/2, B, H);

wenn (Taste4) {

füllen(255);

} anders {

füllen(124, 60, 131);

}

Rechteck (Breite/6 * 4, Höhe/2, B, H);

wenn (Taste5) {

füllen(255);

} anders {

füllen (107, 27, 157);

}

Rechteck (Breite/6 * 5, Höhe/2, B, H);

}

Leere TasteGedrückt() {

if (Schlüssel == 'a') {

sound1.play();

Schlüssel1 = wahr;

}

if (Schlüssel == 's') {

sound2.play();

key2 = wahr;

}

if (Schlüssel == 'd') {

sound3.play();

Schlüssel3 = wahr;

}

if (Schlüssel == 'f') {

sound4.play();

key4 = wahr;

}

if (Schlüssel == 'g') {

sound5.play();

key5 = wahr;

}

}

void keyReleased() {

if (Schlüssel == 'a') {

Schlüssel1 = falsch;

}

if (Schlüssel == 's') {

key2 = falsch;

}

if (Schlüssel == 'd') {

key3 = falsch;

}

if (Schlüssel == 'f') {

key4 = falsch;

}

if (Schlüssel == 'g') {

key5 = falsch;

}

} [/cceN_cpp]

Code-Erklärung:

Wir müssen mehrere Audioobjekte erstellen, um die relativen Klanginformationen zu lesen, um unterschiedliche Klänge zu spielen, wenn verschiedene Tasten ausgelöst werden.

Hier verwenden wir ein neues Ereignis keyReleased(). Die Funktion dieses Ereignisses besteht darin, die Tastaturfarbe auf ihre ursprüngliche Farbe zurückzusetzen. Beim Loslassen der Taste wird diese ausgelöst.

Die 5 im Kopf deklarierten booleschen Werte werden verwendet, um den Status des Schlüssels zu erkennen.

Schritt 9: Umfassendes Beispiel - Musikpalette 1

Neben dem Tastaturereignis ist das Mausereignis eine gute Sache, dass wir es flexibel einsetzen müssen. Das folgende Beispiel dient dazu, eine Musikpalette zu erstellen, unter der wir zwei mausbezogene Events verwendet haben.

Video-Website:

Code-Beispiel (10-7):

[cceN_cpp theme="dawn"] import processing.sound.*;

SoundFile Sound1, Sound2, Sound3, Sound4, Sound5;

boolean isZiehen;

Leere Einrichtung () {

Größe (640, 360);

Hintergrund (255, 214, 79);

keinStroke();

sound1 = new SoundFile (dies, "do.wav");

sound2 = new SoundFile (dies, "re.wav");

sound3 = new SoundFile (dies, "mi.wav");

sound4 = new SoundFile(diese, "fa.wav");

sound5 = new SoundFile (dies, "so.wav");

}

Leere zeichnen () {

if (istZiehen) {

füllen (107, 27, 157, 100);

Ellipse (MausX, MausY, 16, 16);

}

}

Leere MausZiehen () {

isDragging = true;

if (mausX > 100 && mausX < 105) {

sound1.play();

}

if (mausX > 200 && mausX < 205) {

sound2.play();

}

if (mausX > 300 && mausX < 305) {

sound3.play();

}

if (mausX > 400 && mausX < 405) {

sound4.play();

}

if (mausX > 500 && mausX < 505) {

sound5.play();

}

}

void mouseReleased() {

isDragging = false;

} [/cceN_cpp]

Code-Erklärung:

Wir hoffen, dass wir nur dann Bilder zeichnen können, wenn wir die Maus gedrückt und gezogen haben. Wir müssen also eine boolesche Variable isDragging erstellen, um den aktuellen Status zu erhalten.

Beim Ziehen mit der Maus wird isDragging true, sodass Zeichenfunktionen innerhalb von Draw ausgeführt werden. Es hinterlässt Spuren auf dem Bildschirm. Wenn wir die Maus loslassen, wird isDragging zum falschen Wert. Die Zeichenfunktionen in der Funktion draw stoppen also die Ausführung.

Wir haben mehrere Auslösebedingungen für das Maus-Ziehen-Ereignis entwickelt. Wenn beispielsweise die horizontale Koordinate der Maus zwischen 100 und 105 Pixel liegt, wird die Musik automatisch abgespielt. Dadurch erstellt der Bildschirm mehrere unsichtbare Zeichenfolgen. Nur wenn die Maus bestimmte Bereiche durchfährt, wird die entsprechende Musik ausgelöst.

Schritt 10: Umfassendes Beispiel - Musikpalette 2 (aktualisierte Version)

Die Wirkung des obigen Beispiels ist bereits gut genug. Aber wenn wir es genau beobachten, werden wir viele Probleme finden. Wenn sich die Maus beispielsweise sehr schnell bewegt, hinterlässt sie bei jeder Bewegung einen runden Punkt auf dem Bildschirm. Es ist keine zusammenhängende gerade Linie. Inzwischen verursacht es auch einige Musiklecks. Wenn sich die Maus jedoch sehr langsam bewegt und die Position durchläuft, an der die horizontalen Koordinaten zwischen 100 und 105 liegen, sendet sie innerhalb kürzester Zeit mehrmals Musik, was Ihnen das Gefühl gibt, festzustecken. All diese Probleme können wir durch das folgende Beispiel lösen.

Unter folgendem Link können Sie sich Videos ansehen:

v.qq.com/x/page/w03226o4y4l.html

Code-Beispiel (10-8):

[cceN_cpp theme="dawn"] import processing.sound.*;

SoundFile Sound1, Sound2, Sound3, Sound4, Sound5;

boolean isDragging;

Leere Einrichtung () {

Größe (640, 360);

Hintergrund (255, 214, 79);

keinStroke();

sound1 = new SoundFile (dies, "do.wav");

sound2 = new SoundFile (dies, "re.wav");

sound3 = new SoundFile (dies, "mi.wav");

sound4 = new SoundFile(diese, "fa.wav");

sound5 = new SoundFile (dies, "so.wav");

}

Leere zeichnen () {

if (isZiehen) {

Schlaganfall (107, 27, 157, 100);

Strichgewicht(10);

line(mouseX, mouseY, pmouseX, pmouseY);

}

}

Leere MausZiehen () {

isDragging = true;

if ((mouseX - 100) * (pmouseX - 100) < 0) {

sound1.play();

}

if ((mouseX - 200) * (pmouseX - 200) < 0) {

sound2.play();

}

if ((mouseX - 300) * (pmouseX - 300) < 0) {

sound3.play();

}

if ((mouseX - 400) * (pmouseX - 400) < 0) {

sound4.play();

}

if ((mouseX - 500) * (pmouseX - 500) < 0) {

sound5.play();

}

}

void mouseReleased() {

isDragging = false;

} [/cceN_cpp]

Code-Erklärung:

Hier haben wir zwei Variablen pmouseX und pmouseY verwendet, die im Verarbeitungssystem selbst enthalten sind. Sie ähneln mouseX und mouseY, aber sie erhalten die Koordinate der Maus im letzten Frame.

In Function draw haben wir die Funktion line() verwendet, um die ursprüngliche Funktion ellipse() zu ersetzen. Dadurch wird die Koordinate des letzten Frames direkt mit der Koordinate des aktuellen Frames verbunden. So können wir zusammenhängende Geraden oder Kurven zeichnen.

Im Ereignis mouseDragged haben wir eine neue Auslösebedingung entwickelt. Durch Beurteilen, ob die Koordinate des letzten Frames und des aktuellen Frames auf derselben Seite liegen, um zu wissen, ob eine bestimmte Koordinate gekreuzt wird. Nehmen Sie diese Bedingung als Beispiel: " if ((mouseX - 100) * (pmouseX - 100) < 0) ". Darunter können wir aus dem positiven und negativen Wert von " mouseX - 100 " erkennen, ob sich mouseX rechts oder links der horizontalen Koordinate 100 befindet. Ähnlich wie "pmouseX - 100". Wenn also die beiden Punkte vorne und hinten nicht auf derselben Seite liegen, multipliziert ein positives ein negatives, es erhält eine neue negative Zahl. Damit ist die Ausführungsbedingung erfüllt.

Das obige ist ein vereinfachter Ausdruck, der geschickt einen bestimmten mathematischen Algorithmus verwendet hat - zwei negative Zahlen multiplizieren ergibt einen positiven. Sie können es auch in zwei Situationen aufteilen, um sie separat zu besprechen. Es ist jedoch viel komplizierter, Beurteilungsbedingungen zu schreiben. Die Beurteilungsbedingungen "if ((mouseX = 100) || (mouseX > 100 && pmouseX <= 100))" sind äquivalent zu den Bestimmungsbedingungen des Quellcodes.

Schritt 11: Relative Funktionen zur Audio- und Videosteuerung

Für allgemeine Anwendungsszenarien sind die oben genannten Funktionen ausreichend. Wenn Sie tiefer graben möchten, habe ich hier einige gängige Funktionen in Bezug auf Audio und Video für Sie zusammengestellt. Sie können seine Verwendungen nach Ihren eigenen Anforderungen erkunden.

Für eine weitere Einführung können Sie auf Dokumente von der offiziellen Website verweisen.

Audio (https://processing.org/reference/libraries/sound/index.html)

Video (https://processing.org/reference/libraries/video/index.html)

Dieser Artikel stammt von Designer Wenzy.

Schritt 12: Relative Messwerte:

Interessante Programmieranleitung für Designer – Erste Berührungen verarbeiten

Interessante Programmieranleitung für Designer – Erstellen Sie Ihr erstes Verarbeitungsprogramm

Interessante Programmieranleitung für Designer – Bringen Sie Ihr Bild zum Laufen (Teil 1)

Interessante Programmieranleitung für Designer – Bringen Sie Ihr Bild zum Laufen (Teil 2)

Interessante Programmieranleitung für Designer–Program Process Control–Loop Statement

Interessante Programmieranleitung für Designer – Programmprozesssteuerung – Bedingungserklärung (Teil 1)

Interessante Programmieranleitung für Designer – Programmprozesssteuerung – Bedingung (Teil 2)

Interessante Programmieranleitung für Designer – benutzerdefinierte Funktionen und fraktale Rekursion

Interessante Programmieranleitung für Designer – benutzerdefinierte Funktionen und fraktale Rekursion

Interessante Anleitungen zur Verarbeitungsprogrammierung für Designer – Farbsteuerung

Schritt 13: Quelle

Dieser Artikel ist von:

Bei Fragen wenden Sie sich bitte an: [email protected].

Empfohlen: