Πίνακας περιεχομένων:

Ενδιαφέρουσες οδηγίες προγραμματισμού επεξεργασίας για σχεδιαστές-φόρτωση μέσων και εκδήλωση: 13 βήματα
Ενδιαφέρουσες οδηγίες προγραμματισμού επεξεργασίας για σχεδιαστές-φόρτωση μέσων και εκδήλωση: 13 βήματα

Βίντεο: Ενδιαφέρουσες οδηγίες προγραμματισμού επεξεργασίας για σχεδιαστές-φόρτωση μέσων και εκδήλωση: 13 βήματα

Βίντεο: Ενδιαφέρουσες οδηγίες προγραμματισμού επεξεργασίας για σχεδιαστές-φόρτωση μέσων και εκδήλωση: 13 βήματα
Βίντεο: OCC 2021. R4C Innovative School Projects from Greek schools Session 1 2024, Ιούλιος
Anonim
Ενδιαφέρουσες οδηγίες προγραμματισμού επεξεργασίας για σχεδιαστές-φόρτωση μέσων και εκδήλωση
Ενδιαφέρουσες οδηγίες προγραμματισμού επεξεργασίας για σχεδιαστές-φόρτωση μέσων και εκδήλωση

Η επεξεργασία μπορεί να φορτωθεί με πολλά εξωτερικά δεδομένα, μεταξύ των οποίων υπάρχουν τρεις τύποι που χρησιμοποιούνται πολύ συχνά. Πρόκειται για εικόνα, ήχο και βίντεο ξεχωριστά.

Σε αυτό το κεφάλαιο, θα μιλήσουμε για τον τρόπο φόρτωσης του ήχου και του βίντεο λεπτομερώς, σε συνδυασμό με γεγονότα. Στο τέλος, μπορείτε να δημιουργήσετε το δικό σας πληκτρολόγιο μουσικής ή παλέτα μουσικής.

Βήμα 1: Διαβάστε την εικόνα

Πριν ξεκινήσουμε, ας ανατρέξουμε στη μέθοδο φόρτωσης εικόνας.

Βήμα 2: Λειτουργίες που σχετίζονται με την εικόνα

Πριν χρησιμοποιήσουμε αυτές τις συναρτήσεις, πρέπει να δημιουργήσουμε ένα αντικείμενο εικόνας μέσω PImage. Στη συνέχεια, μπορούμε να χρησιμοποιήσουμε αυτές τις συναρτήσεις για να ορίσουμε κάθε είδους ιδιότητες εικόνας.

Μην ξεχάσετε να αποθηκεύσετε τις πηγές εικόνας σας σε αρχείο δεδομένων πριν εκτελέσετε το πρόγραμμά σας.

Βήμα 3: Φόρτωση μουσικής, αναπαραγωγή και διακοπή

Στη συνέχεια, αρχίζουμε να σας παρουσιάζουμε επίσημα την επίκληση μουσικής. Πολύ παρόμοια με τη φόρτωση εικόνας, πρέπει να δηλώσετε ένα αντικείμενο ήχου στην αρχή. Μπορείτε να ανατρέξετε στο παρακάτω παράδειγμα από την πραγματική γραμματική.

Παράδειγμα κώδικα (10-1):

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

Soundχος SoundFile?

void setup () {

μέγεθος (640, 360).

φόντο (255);

ήχος = νέο SoundFile (αυτό, "1.mp3");

}

άκυρη κλήρωση () {

}

void keyPressed () {

// Αναπαραγωγή ήχου

εάν (κλειδί == 'p') {

sound.play ();

}

// Διακοπή ήχου

εάν (κλειδί == 's') {

sound.stop ();

}

} [/cceN_cpp]

Παρασκευή:

Η ίδια η επεξεργασία δεν φέρει βιβλιοθήκη ήχου. Πρέπει να το κατεβάσετε μόνοι σας. Έτσι, πριν γράψετε τον κωδικό σας, καλύτερα να κάνετε τις ακόλουθες προετοιμασίες.

Προσθήκη βιβλιοθήκης στην Επεξεργασία. Εδώ είναι η συνήθης πρακτική. Επιλέξτε από τη γραμμή μενού για "Εργαλείο"- "Προσθήκη εργαλείου" και, στη συνέχεια, μεταβείτε στις "Βιβλιοθήκες". Εισαγάγετε τις λέξεις -κλειδιά της βιβλιοθήκης στη στήλη αναζήτησης, ώστε να μπορείτε να την κατεβάσετε και να την εγκαταστήσετε απευθείας.

Ωστόσο, εάν χρησιμοποιούμε αυτήν τη λειτουργία στην εγχώρια χώρα μας (στην Κίνα), δεν μπορούμε να την κατεβάσουμε συνδέοντας απευθείας τον ιστό. Πρέπει να ξεκινήσουμε το VPN. Ακόμα κι αν το ξεκινήσουμε, θα υπάρχουν άστατες συνθήκες. Πρέπει λοιπόν να κάνεις υπομονή για να το δοκιμάσεις αρκετές φορές. Αυτή είναι η πιο βολική μέθοδος φόρτωσης. Εάν δεν μπορείτε να εγκαταστήσετε, πρέπει να κάνετε λήψη από τον επίσημο ιστότοπο με εγχειρίδιο. (https://processing.org/reference/libraries/) Επειδή η χειροκίνητη μέθοδος εγκατάστασης είναι πολύ περίπλοκη, θα την συζητήσουμε περαιτέρω στο άλλο κεφάλαιο.

Κωδικός Εξήγηση:

Η βιβλιοθήκη ήχου μπορεί να λειτουργήσει σωστά μετά την ολοκλήρωση της προετοιμασίας. Αντιμετωπίστε τον παραπάνω κώδικα, κάντε κλικ στο RUN και μετά θα λειτουργήσει. Πατήστε το πλήκτρο "P" για αναπαραγωγή μουσικής, "S" για διακοπή της μουσικής.

Εάν έχει συνηθίσει στο πρόγραμμα, πρέπει πρώτα να το φορτώσουμε. Στην αρχή, πρέπει να προσθέσουμε μια πρόταση "εισαγωγή επεξεργασίας. Ήχου.*". "εισαγωγή" είναι η λέξη κλειδί, που σημαίνει φόρτωση κυριολεκτικά. Προσθέστε το όνομα της βιβλιοθήκης πίσω από την "εισαγωγή" και στη συνέχεια θα φορτώσει τη βιβλιοθήκη. Η ουρά ακολουθεί συνήθως ένα σημάδι "*", επομένως θα φορτώσει όλες τις σχετικές με τη βιβλιοθήκη τάξεις στο πρόγραμμα χωρίς να χρειάζεται να τις προσθέσει μία προς μία χειροκίνητα.

Στη δεύτερη πρόταση, "SoundFile sound;" έχει δηλώσει ένα αντικείμενο ήχου. Το SoundFile είναι παρόμοιο με το PImage.

Στο πλαίσιο της ρύθμισης της λειτουργίας, "sound = new SoundFile (αυτό," 1.mp3 ");" χρησιμοποιείται για τη δημιουργία ενός αντικειμένου και τον καθορισμό της διαδρομής ανάγνωσής του. Εδώ έχουμε ήδη αρχίσει να χρησιμοποιούμε μια νέα έννοια Class. Αυτή τη στιγμή δεν το συζητάμε βαθιά. Αρκεί να γνωρίζουμε ότι είναι μια σταθερή μέθοδος γραφής και η τελευταία παράμετρος είναι η συμπλήρωση της διεύθυνσης της πηγής μουσικής.

Μεταξύ των keyPressed () γεγονότων, το "sound.play ()" και το "sound.stop ()" λειτουργούν σχετικά ως το εφέ του παιχνιδιού και της διακοπής. "." στη μέση υποδεικνύει μια λειτουργία μέλους που παίζει και σταματά ανήκει σε αντικείμενα ήχου. Μπορούμε να θεωρήσουμε τη συνάρτηση μέλους ως τη συνάρτηση που περιλαμβάνεται στο αντικείμενο. Ανήκει σε αυτό το αντικείμενο, το οποίο έχει οριστεί εκ των προτέρων. Αργότερα, όταν χρειάζεται να παίξουμε πολλά αντικείμενα ήχου, πρέπει να προσθέσουμε μόνο ".play ()" πίσω από το σχετικό όνομα της μεταβλητής.

Οι πηγές ήχου αποθηκεύονται στο αρχείο δεδομένων κάτω από τον ίδιο κατάλογο sketchfile (με επίθημα pde). Εάν δεν υπάρχει κανένα, μπορείτε να το δημιουργήσετε χειροκίνητα.

Μην ξεχάσετε να γράψετε κλήρωση συνάρτησης. Παρόλο που δεν σχεδιάσατε γραφικά, είναι απαραίτητο να παίξετε μουσική με επιτυχία.

Η παραπάνω διαδικασία φαίνεται αρκετά περίπλοκη, αλλά πρέπει να προσθέσετε αρκετές φράσεις κώδικα μόνο, τότε μπορείτε να πραγματοποιήσετε τη λειτουργία αναπαραγωγής. Είναι πολύ βολικό.

Η επεξεργασία υποστηρίζει κοινές μορφές ήχου όπως mp3, wav, ogg κλπ.

Βήμα 4: Έλεγχος ταχύτητας μουσικής

Τα παρακάτω παραδείγματα θα αρχίσουν να γίνονται πολύ ενδιαφέροντα. Η επεξεργασία παρέχει ορισμένες λειτουργίες που μπορούν να ελέγξουν την ταχύτητα αναπαραγωγής μουσικής. Ταυτόχρονα, οι ήχοι θα αλλάξουν με την ταχύτητα αναπαραγωγής μουσικής. Όταν χρησιμοποιούμε το ποντίκι για έλεγχο, θα παράγει πολύ ψυχεδελικό αποτέλεσμα.

Ιστότοπος βίντεο:

Παράδειγμα κώδικα (10-2):

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

Soundχος SoundFile?

void setup () {

μέγεθος (640, 360).

φόντο (255);

ήχος = νέο SoundFile (αυτό, "1.mp3");

}

άκυρη κλήρωση () {

float speed = mouseX/(float) πλάτος * 3;

sound.rate (ταχύτητα)?

float vol = ποντίκιY/(float) ύψος * 4;

sound.amp (τόμος)?

}

void keyPressed () {

// Αναπαραγωγή ήχου

εάν (κλειδί == 'p') {

sound.play ();

}

// Διακοπή ήχου

εάν (κλειδί == 's') {

sound.stop ();

}

} [/cceN_cpp]

Κωδικός Εξηγήστε:

Λειτουργία.rate () ελέγχει την ταχύτητα αναπαραγωγής ήχου. Η τιμή στην παρένθεση καθορίζει τη γρήγορη και αργή ταχύτητα αναπαραγωγής. Όταν η τιμή είναι 1, η ταχύτητα αναπαραγωγής είναι φυσιολογική. Όταν είναι πάνω από 1, τότε επιταχύνετε. ενώ είναι κάτω από 1, στη συνέχεια επιβραδύνετε.

Η λειτουργία.amp () ελέγχει την ένταση του ήχου. Η τιμή στην παρένθεση καθορίζει την τιμή του όγκου. Όταν είναι 1, η τιμή έντασης είναι φυσιολογική. Όταν είναι πάνω από 1, τότε αυξήστε τον όγκο. ενώ είναι κάτω από 1, τότε μειώστε την ένταση.

Εδώ έχουμε δημιουργήσει δύο τοπικές μεταβλητές ταχύτητα και vol ως παράμετροι που πρέπει να φορτωθούν. Επομένως, η οριζόντια συντεταγμένη του ποντικιού θα αλλάξει τον τόνο της μουσικής και η κάθετη συντεταγμένη θα αλλάξει την ένταση της μουσικής.

Βήμα 5: Αναπαραγωγή βίντεο και διακοπή

Στην Επεξεργασία, η φόρτωση βίντεο είναι παρόμοια με τη φόρτωση ήχου. Πρέπει πρώτα να κατεβάσετε τη βιβλιοθήκη βίντεο. (https://processing.org/reference/libraries/video/index.html)

Παράδειγμα κώδικα (10-3):

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

Κινηματογραφική ταινία;

void setup () {

μέγεθος (640, 360).

φόντο (0);

mov = νέα ταινία (αυτή, "1.mov");

}

void movieEvent (Ταινία ταινίας) {

mov.read ();

}

άκυρη κλήρωση () {

εικόνα (mov, 0, 0, 640, 360);

}

void keyPressed () {

εάν (κλειδί == 'p') {

mov.play ();

}

εάν (κλειδί == 's') {

mov.stop ();

}

εάν (κλειδί == 'd') {

mov.pause ();

}

} [/cceN_cpp]

Στιγμιότυπο οθόνης βίντεο:

Κωδικός Εξηγήστε:

Η πρώτη πρόταση "εισαγωγή επεξεργασίας. Βίντεο.*;" Χρησιμοποιείται για τη φόρτωση της βιβλιοθήκης βίντεο.

Η δεύτερη πρόταση "Movie mov;" χρησιμοποιείται για τη δήλωση αντικειμένου βίντεο. Μεταξύ αυτών, η λειτουργία του "Movie" είναι παρόμοια με το PImage.

Στη ρύθμιση της λειτουργίας, το αποτέλεσμα του "mov = new Movie (this," 1.mov ");" είναι να δημιουργήσει αντικείμενο και να καθορίσει τη διαδρομή ανάγνωσής του. Η τελευταία παράμετρος συμπληρώνεται με τη διεύθυνση της πηγής βίντεο.

Behine setup, το movieEvent αντιπροσωπεύει συμβάν βίντεο. Χρησιμοποιείται για την ενημέρωση και την ανάγνωση πληροφοριών βίντεο. "mov.read ()" στην περίπτωση σημαίνει ανάγνωση.

Εκτός από την εμφάνιση εικόνων, η εικόνα λειτουργίας μπορεί επίσης να εμφανίσει βίντεο. Μπορούμε να θεωρήσουμε το αντικείμενο βίντεο ως μια δυναμική εικόνα. Η πρώτη παράμετρος, συμπληρώνουμε το όνομα της μεταβλητής του αντικειμένου βίντεο. Η δεύτερη και η τρίτη παράμετρος είναι η οριζόντια και η κάθετη συντεταγμένη που σχεδιάζεται με βίντεο. Οι τέταρτες και πέμπτες παράμετροι καθορίζουν το μήκος και το πλάτος της προβολής βίντεο.

Λειτουργία.play () σημαίνει παιχνίδι. Λειτουργία.stop () σημαίνει διακοπή και θα επαναφέρει το βίντεο. Λειτουργία.παύση () σημαίνει παύση. Θα διακόψει την τρέχουσα αναπαραγωγή, η οποία θα συνεχιστεί μέχρι να γίνει επίκληση της λειτουργίας.play ().

Βήμα 6: Έλεγχος ταχύτητας βίντεο

Παράδειγμα κώδικα (10-4):

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

Κινηματογραφική ταινία;

void setup () {

μέγεθος (640, 360).

φόντο (0);

mov = νέα ταινία (αυτό, "transit.mov");

}

void movieEvent (Ταινία ταινίας) {

mov.read ();

}

άκυρη κλήρωση () {

εικόνα (mov, 0, 0, πλάτος, ύψος).

float newSpeed = mouseX/(float) πλάτος * 4;

mov.speed (newSpeed);

}

void keyPressed () {

εάν (κλειδί == 'p') {

mov.play ();

}

εάν (κλειδί == 's') {

mov.stop ();

}

εάν (κλειδί == 'd') {

mov.pause ();

}

}

[/cceN_cpp]

Κωδικός Εξηγήστε:

Η λειτουργία.speed () μπορεί να χρησιμοποιηθεί για τον έλεγχο της ταχύτητας αναπαραγωγής βίντεο. Όταν η τιμή της παραμέτρου είναι 1, η ταχύτητα αναπαραγωγής είναι φυσιολογική. Όταν η τιμή υπερβαίνει το 1, τότε επιταχύνετε. ενώ είναι κάτω από 1, στη συνέχεια επιβραδύνετε.

Επειδή έχουμε δημιουργήσει τοπική μεταβλητή newSpeed και την εισαγάγαμε στη λειτουργία setSpeed (), η συντεταγμένη του ποντικιού θα επηρεάσει άμεσα την ταχύτητα αναπαραγωγής του βίντεο.

Όσο για περισσότερα παραδείγματα σχετικά με το βίντεο, μπορείτε να ανατρέξετε στις Βιβλιοθήκες - Βίντεο στη βιβλιοθήκη υπόθεσης.

Βήμα 7: Επεξεργασία κοινών συμβάντων

Προηγουμένως, είχαμε εισαγάγει μόνο το συμβάν keyPressed (). Θα ενεργοποιηθεί αφού πατήσετε το πληκτρολόγιο. Στη συνέχεια, θα σας παρουσιάσουμε άλλα κοινά συμβάντα στην Επεξεργασία για εσάς.

Οι χρήσεις των παραπάνω γεγονότων είναι παρόμοιες με το keyPressed. Δεν έχουν ακολουθία στη γραφή κώδικα. Με άλλα λόγια, ανεξάρτητα από το γεγονός που τοποθετήσατε πριν ή πίσω από τη ρύθμιση της λειτουργίας, έχετε το ίδιο αποτέλεσμα. Η εντολή εκτέλεσης σχετίζεται μόνο με την κατάσταση ενεργοποίησης του ίδιου του συμβάντος. Μόνο εάν πληρείται η προϋπόθεση, τότε θα εκτελεστεί. Όλα τα παραπάνω γεγονότα είναι πολύ εύκολα κατανοητά. Απλώς πρέπει να κάνετε ένα μικρό πείραμα και, στη συνέχεια, μπορείτε να κατανοήσετε γρήγορα τις χρήσεις τους.

Ροή συμβάντων

Μπορούμε να χρησιμοποιήσουμε ένα παράδειγμα για να γνωρίζουμε τη σειρά εκτέλεσης των γεγονότων.

Παράδειγμα κώδικα (10-5):

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

frameRate (2);

println (1);

}

άκυρη κλήρωση () {

println (2);

}

void mousePressed () {

println (3);

}

void mouseMoved () {

println (4);

}

void mouseReleased () {

println (5);

}

void keyPressed () {

println (6);

}

void keyReleased () {

println (7);

} [/cceN_cpp]

Κωδικός Εξηγήστε:

Κατά τη ρύθμιση της λειτουργίας, η λειτουργία frameRate () έχει ορίσει την ταχύτητα λειτουργίας του προγράμματος να είναι 2 καρέ ανά δευτερόλεπτο. Η μείωση του ρυθμού καρέ μπορεί να μας βοηθήσει να παρατηρήσουμε την έξοδο στην κονσόλα, σε περίπτωση που τα γεγονότα που ενεργοποιούνται θα περάσουν αμέσως από νέα δεδομένα στο πίσω μέρος.

Προσπαθήστε να μετακινήσετε το ποντίκι σας, κάντε κλικ στο ποντίκι, αφήστε το ποντίκι και παρατηρήστε το αποτέλεσμα εξόδου. Γνωρίστε τη σειρά εκτέλεσης συμβάντος μέσω println.

Αυτό που αξίζει να προσέξετε είναι ότι οι λειτουργίες σχεδίασης δεν μπορούν να γραφτούν σε άλλα συμβάντα εκτός από την κλήρωση λειτουργιών ή δεν μπορούν να εμφανιστούν. Εάν θέλουμε να ελέγξουμε την απόκρυψη και την εμφάνιση των γραφικών στοιχείων μέσω συμβάντων όπως το keyPressed, μπορεί να σκεφτούμε να δημιουργήσουμε μεταβλητή bool ως μέσο.

Τα συμβάντα θα εκτελούνται με τη σειρά. Μόνο αφού εφαρμοστεί όλος ο κώδικας στο τρέχον συμβάν, θα εκτελέσει τον κώδικα στο επόμενο συμβάν.

Βήμα 8: Συνολικό παράδειγμα-Πληκτρολόγιο μουσικής

Σε συνδυασμό με τα νέα γεγονότα, μπορούμε να προσθέσουμε νέες αλληλεπιδράσεις στο πρόγραμμά μας. Στη συνέχεια, μόνο με λίγα λεπτά, μπορούμε εύκολα να αναλογίσουμε ένα πληκτρολόγιο μουσικής.

Ιστότοπος βίντεο:

Παράδειγμα κώδικα (10-6):

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

SoundFile ήχος1, ήχος2, ήχος3, ήχος4, ήχος5;

boolean key1, key2, key3, key4, key5?

void setup () {

μέγεθος (640, 360).

φόντο (255);

noStroke ();

sound1 = νέο SoundFile (αυτό, "do.wav");

sound2 = νέο SoundFile (αυτό, "re.wav");

sound3 = νέο SoundFile (αυτό, "mi.wav");

sound4 = νέο SoundFile (αυτό, "fa.wav");

sound5 = νέο SoundFile (αυτό, "so.wav");

}

άκυρη κλήρωση () {

φόντο (255, 214, 79).

rectMode (ΚΕΝΤΡΟ);

float w = πλάτος * 0.1;

float h = ύψος * 0,8;

αν (κλειδί 1) {

γέμισμα (255);

} αλλο {

γέμισμα (238, 145, 117).

}

ορθός (πλάτος/6, ύψος/2, w, h);

εάν (κλειδί2) {

γέμισμα (255);

} αλλο {

γέμισμα (246, 96, 100).

}

ορθός (πλάτος/6 * 2, ύψος/2, w, h);

εάν (κλειδί3) {

γέμισμα (255);

} αλλο {

γέμισμα (214, 86, 113).

}

ορθός (πλάτος/6 * 3, ύψος/2, w, h);

αν (κλειδί4) {

γέμισμα (255);

} αλλο {

γέμισμα (124, 60, 131).

}

ορθός (πλάτος/6 * 4, ύψος/2, w, h);

αν (κλειδί 5) {

γέμισμα (255);

} αλλο {

γέμισμα (107, 27, 157);

}

ορθός (πλάτος/6 * 5, ύψος/2, w, h);

}

void keyPressed () {

εάν (κλειδί == 'α') {

sound1.play ();

κλειδί1 = αλήθεια

}

εάν (κλειδί == 's') {

sound2.play ();

κλειδί2 = αλήθεια.

}

εάν (κλειδί == 'd') {

sound3.play ();

key3 = true

}

εάν (κλειδί == 'f') {

sound4.play ();

key4 = true;

}

εάν (κλειδί == 'g') {

sound5.play ();

key5 = true;

}

}

void keyReleased () {

εάν (κλειδί == 'α') {

key1 = false;

}

εάν (κλειδί == 's') {

key2 = false;

}

εάν (κλειδί == 'd') {

key3 = false;

}

εάν (κλειδί == 'f') {

key4 = false;

}

εάν (κλειδί == 'g') {

key5 = false;

}

} [/cceN_cpp]

Κωδικός Εξηγήστε:

Πρέπει να δημιουργήσουμε πολλά αντικείμενα ήχου για να διαβάσουμε τις σχετικές πληροφορίες ήχου ώστε να αναπαράγουμε διαφορετικούς ήχους όταν ενεργοποιούνται διαφορετικά πλήκτρα.

Εδώ χρησιμοποιούμε ένα νέο keyReleased συμβάν (). Η λειτουργία αυτού του συμβάντος είναι να επαναφέρει το χρώμα του πληκτρολογίου στο αρχικό του χρώμα. Όταν αφήσετε το κλειδί, θα ενεργοποιηθεί.

Οι 5 boolean τιμές που δηλώνονται στην κεφαλή χρησιμοποιούνται για τον εντοπισμό της κατάστασης του κλειδιού.

Βήμα 9: Συνολικό παράδειγμα-Μουσική παλέτα 1

Εκτός από το συμβάν του πληκτρολογίου, το γεγονός του ποντικιού είναι ένα καλό πράγμα που πρέπει να το χρησιμοποιούμε με ευελιξία. Το ακόλουθο παράδειγμα είναι για εμάς να δημιουργήσουμε μια παλέτα μουσικής, μεταξύ των οποίων χρησιμοποιήσαμε δύο συμβάντα που σχετίζονται με το ποντίκι.

Ιστότοπος βίντεο:

Παράδειγμα κώδικα (10-7):

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

SoundFile ήχος1, ήχος2, ήχος3, ήχος4, ήχος5;

boolean isDragging;

void setup () {

μέγεθος (640, 360).

φόντο (255, 214, 79);

noStroke ();

sound1 = νέο SoundFile (αυτό, "do.wav");

sound2 = νέο SoundFile (αυτό, "re.wav");

sound3 = νέο SoundFile (αυτό, "mi.wav");

sound4 = νέο SoundFile (αυτό, "fa.wav");

sound5 = νέο SoundFile (αυτό, "so.wav");

}

άκυρη κλήρωση () {

εάν (isDragging) {

γέμισμα (107, 27, 157, 100).

έλλειψη (mouseX, mouseY, 16, 16);

}

}

void mouseDragged () {

isDragging = true;

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

sound1.play ();

}

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

sound2.play ();

}

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

sound3.play ();

}

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

sound4.play ();

}

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

sound5.play ();

}

}

void mouseReleased () {

isDragging = false;

} [/cceN_cpp]

Κωδικός Εξηγήστε:

Ελπίζουμε ότι μόνο όταν πατήσουμε το ποντίκι και το σύρουμε, μπορούμε να σχεδιάσουμε εικόνες. Πρέπει λοιπόν να δημιουργήσουμε μια boolean μεταβλητή isDragging για να αποκτήσουμε την τρέχουσα κατάσταση.

Όταν σύρετε το ποντίκι, το isDragging γίνεται πραγματική τιμή, έτσι ώστε να εκτελεστούν οι λειτουργίες σχεδίασης στο Draw. Θα αφήσει ίχνη στην οθόνη. Όταν αφήνουμε το ποντίκι, το isDragging γίνεται false τιμή. Έτσι, οι λειτουργίες σχεδίασης στο draw function θα σταματήσουν την εκτέλεση.

Έχουμε σχεδιάσει αρκετές συνθήκες ενεργοποίησης στο συμβάν μεταφοράς ποντικιού. Για παράδειγμα, όταν η οριζόντια συντεταγμένη του ποντικιού είναι μεταξύ 100 και 105 εικονοστοιχείων, η μουσική θα αναπαράγεται αυτόματα. Αυτό κάνει την οθόνη να δημιουργεί αρκετές αόρατες χορδές. Μόνο εάν το ποντίκι περάσει από ορισμένες περιοχές, θα ενεργοποιήσει τη σχετική μουσική.

Βήμα 10: Ολοκληρωμένο Παράδειγμα-Μουσική παλέτα 2 (Ενημερωμένη έκδοση)

Η επίδραση του παραπάνω παραδείγματος είναι ήδη αρκετά καλή. Αλλά αν το παρακολουθήσουμε προσεκτικά, θα βρούμε πολλά προβλήματα. Για παράδειγμα, όταν το ποντίκι κινείται πολύ γρήγορα, θα αφήνει ένα στρογγυλό σημείο στην οθόνη κάθε φορά που κινείται. Δεν είναι συνεκτική ευθεία. Εν τω μεταξύ, προκαλεί επίσης κάποια διαρροή μουσικής. Ενώ όταν το ποντίκι κινείται πολύ αργά, περνώντας από τη θέση όταν η οριζόντια συντεταγμένη είναι μεταξύ 100 και 105, θα μεταδίδει μουσική πολλές φορές μέσα σε πολύ σύντομο χρονικό διάστημα, κάτι που σας δίνει την αίσθηση ότι έχετε κολλήσει. Όλα αυτά τα προβλήματα, μπορούμε να τα λύσουμε μέσω του παρακάτω παραδείγματος.

Μπορείτε να παρακολουθήσετε βίντεο στον παρακάτω σύνδεσμο:

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

Παράδειγμα κώδικα (10-8):

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

SoundFile ήχος1, ήχος2, ήχος3, ήχος4, ήχος5;

boolean isDragging;

void setup () {

μέγεθος (640, 360).

φόντο (255, 214, 79);

noStroke ();

sound1 = νέο SoundFile (αυτό, "do.wav");

sound2 = νέο SoundFile (αυτό, "re.wav");

sound3 = νέο SoundFile (αυτό, "mi.wav");

sound4 = νέο SoundFile (αυτό, "fa.wav");

sound5 = νέο SoundFile (αυτό, "so.wav");

}

άκυρη κλήρωση () {

εάν (isDragging) {

εγκεφαλικό επεισόδιο (107, 27, 157, 100).

strokeWeight (10);

γραμμή (mouseX, mouseY, pmouseX, pmouseY);

}

}

void mouseDragged () {

isDragging = true;

εάν ((mouseX - 100) * (pmouseX - 100) <0) {

sound1.play ();

}

εάν ((mouseX - 200) * (pmouseX - 200) <0) {

sound2.play ();

}

εάν ((mouseX - 300) * (pmouseX - 300) <0) {

sound3.play ();

}

εάν ((mouseX - 400) * (pmouseX - 400) <0) {

sound4.play ();

}

εάν ((mouseX - 500) * (pmouseX - 500) <0) {

sound5.play ();

}

}

void mouseReleased () {

isDragging = false;

} [/cceN_cpp]

Κωδικός Εξηγήστε:

Εδώ έχουμε χρησιμοποιήσει δύο μεταβλητές pmouseX και pmouseY που μεταφέρονται στο ίδιο το σύστημα επεξεργασίας. Είναι παρόμοια με τα mouseX και mouseY αλλά αυτό που έλαβαν είναι η συντεταγμένη του ποντικιού στο τελευταίο πλαίσιο.

Στο Function draw, χρησιμοποιήσαμε τη γραμμή συνάρτησης () για να αντικαταστήσουμε την αρχική έλλειψη συνάρτησης (). Αυτό συνδέει άμεσα τη συντεταγμένη του τελευταίου πλαισίου με τη συντεταγμένη του τρέχοντος πλαισίου. Μπορούμε λοιπόν να σχεδιάσουμε συνεκτικές ευθείες ή καμπύλες.

Σε περίπτωση που το mouseDragged, σχεδιάσαμε μια νέα συνθήκη ενεργοποίησης. Μέσω της κρίσης εάν η συντεταγμένη του τελευταίου πλαισίου και του τρέχοντος πλαισίου βρίσκονται στην ίδια πλευρά για να γνωρίζουμε αν διασταυρώνεται μια συγκεκριμένη συντεταγμένη. Πάρτε αυτήν τη συνθήκη ως παράδειγμα: "if ((mouseX - 100) * (pmouseX - 100) <0)". Μεταξύ αυτών, από τη θετική και αρνητική τιμή που προέκυψε από το "mouseX - 100", μπορούμε να γνωρίζουμε αν το mouseX βρίσκεται δεξιά ή αριστερά από το οριζόντιο coodinate 100. Ομοίως με το "pmouseX - 100". Επομένως, όταν τα δύο σημεία μπροστά και πίσω δεν είναι στην ίδια πλευρά, ένα θετικό πολλαπλασιάζει ένα αρνητικό, θα πάρει έναν νέο αρνητικό αριθμό. Έτσι πληρούται η συνθήκη εκτέλεσης.

Τα παραπάνω είναι μια απλοποιημένη έκφραση, η οποία έχει χρησιμοποιήσει έξυπνα έναν συγκεκριμένο μαθηματικό αλγόριθμο-Δύο αρνητικά πολλαπλασιαζόμενα θα δημιουργήσουν ένα θετικό. Μπορείτε επίσης να το χωρίσετε σε δύο καταστάσεις για να συζητήσετε ξεχωριστά. Ωστόσο, είναι πολύ πιο περίπλοκο να γράφουμε συνθήκες κρίσης. Οι όροι κρίσης "if ((mouseX = 100) || (mouseX> 100 && pmouseX <= 100))" είναι ισοδύναμοι με τις καθοριστικές συνθήκες του πηγαίου κώδικα.

Βήμα 11: Σχετικές λειτουργίες σχετικά με τον έλεγχο ήχου και βίντεο

Οι παραπάνω λειτουργίες επαρκούν για σενάρια γενικής χρήσης. Αν θέλετε να το σκάψετε βαθιά, εδώ έχω συλλέξει μερικές κοινές λειτουργίες σχετικά με τον ήχο και το βίντεο για εσάς. Μπορείτε να εξερευνήσετε τις χρήσεις του σύμφωνα με τις δικές σας απαιτήσεις.

Για περισσότερη εισαγωγή, μπορείτε να ανατρέξετε σε έγγραφα από την επίσημη ιστοσελίδα.

Audχος (https://processing.org/reference/libraries/sound/index.html)

Βίντεο (https://processing.org/reference/libraries/video/index.html)

Αυτό το άρθρο προέρχεται από τον σχεδιαστή Wenzy.

Βήμα 12: Σχετικές αναγνώσεις:

Ενδιαφέρουσες οδηγίες προγραμματισμού για σχεδιαστή-Επεξεργασία αρχικού αγγίγματος

Ενδιαφέρουσες οδηγίες προγραμματισμού για σχεδιαστή - Δημιουργήστε το πρώτο σας πρόγραμμα επεξεργασίας

Ενδιαφέρουσες κατευθυντήριες γραμμές προγραμματισμού για Σχεδιαστής-Προβάλετε την εικόνα σας (Μέρος Πρώτο)

Ενδιαφέρουσες κατευθυντήριες γραμμές προγραμματισμού για σχεδιαστής-Προβάλετε την εικόνα σας (Μέρος Δεύτερο)

Ενδιαφέρουσες κατευθυντήριες γραμμές προγραμματισμού για δήλωση βρόχου Designer – Program Process Control- Loop Statement

Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστής-Έλεγχος Διαδικασίας Προγράμματος-Δήλωση Κατάστασης (Μέρος Πρώτο)

Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστής-Έλεγχος Διαδικασίας Προγράμματος-Δήλωση Κατάστασης (Μέρος Δεύτερο)

Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστές-Προσαρμοσμένες Λειτουργίες και Αναδρομή Fractal

Ενδιαφέρουσες Οδηγίες Προγραμματισμού για Σχεδιαστές-Προσαρμοσμένες Λειτουργίες και Αναδρομή Fractal

Ενδιαφέρουσες οδηγίες προγραμματισμού επεξεργασίας για σχεδιαστές-Έλεγχος χρωμάτων

Βήμα 13: Πηγή

Αυτό το άρθρο προέρχεται από:

Εάν έχετε οποιεσδήποτε ερωτήσεις, μπορείτε να επικοινωνήσετε στο : [email protected].

Συνιστάται: