1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM ΠΡΑΣΙΝΟ: Γεια, σε όλους. 3 00:00:07,170 --> 00:00:08,640 Καλώς ήρθατε στο σεμινάριο μας. 4 00:00:08,640 --> 00:00:10,009 Το όνομά μου είναι Σαμ. 5 00:00:10,009 --> 00:00:11,050 Χιου Zabriskie: Είμαι Hugh. 6 00:00:11,050 --> 00:00:17,420 SAM ΠΡΑΣΙΝΟ: Και θα πάμε να μιλήσουμε σήμερα σχετικά με JavaScript και το Web Audio API. 7 00:00:17,420 --> 00:00:21,180 Ακριβώς για να ξεκινήσει, αυτό είναι ένα περίγραμμα της ατζέντας μας για το σεμινάριο. 8 00:00:21,180 --> 00:00:25,350 Εμείς πάμε για να ξεκινήσω μιλώντας για γιατί θα πρέπει να ενδιαφέρονται για το Web 9 00:00:25,350 --> 00:00:30,130 Ήχος API, γιατί είναι JavaScript η γλώσσα που χρειάζεστε γι 'αυτό, 10 00:00:30,130 --> 00:00:32,619 και τότε μιλάμε για JavaScript essentials-- έτσι όπως, 11 00:00:32,619 --> 00:00:34,800 μπορείτε να περπατήσετε μέσα από μερικά βασικά στοιχεία της γλώσσας, 12 00:00:34,800 --> 00:00:37,290 και στη συνέχεια να μιλήσουμε για το ήχου API σε υψηλό επίπεδο. 13 00:00:37,290 --> 00:00:41,140 Στη συνέχεια, ο Hugh θα μιλήσουμε για μερικούς από τα στάδια της παραγωγής του ήχου 14 00:00:41,140 --> 00:00:45,509 και στη συνέχεια demo αυτό το φοβερό sequencer έργο έχτισε και να σας δείξουμε τον κωδικό. 15 00:00:45,509 --> 00:00:48,050 Και τότε, θα έχουμε χρόνο για ερωτήσεις στο τέλος για τους ανθρώπους 16 00:00:48,050 --> 00:00:49,593 που ζουν εδώ. 17 00:00:49,593 --> 00:00:50,540 >> Χιου Zabriskie: Cool. 18 00:00:50,540 --> 00:00:50,990 >> SAM ΠΡΑΣΙΝΟ: Cool. 19 00:00:50,990 --> 00:00:51,383 >> Χιου Zabriskie: Cool. 20 00:00:51,383 --> 00:00:52,170 Θα δημιουργήσετε αντίγραφα ασφαλείας. 21 00:00:52,170 --> 00:00:54,960 >> SAM ΠΡΑΣΙΝΟ: Λοιπόν, πρώτα πράγματα πρώτα. 22 00:00:54,960 --> 00:00:57,840 Έτσι, ένα από τα μεγάλα πράγματα σχετικά με το Web Audio API 23 00:00:57,840 --> 00:01:00,480 είναι ότι δεν υπάρχει κανένας που έχει συσταθεί απαιτείται. 24 00:01:00,480 --> 00:01:04,230 Έρχεται ενσωματωμένη σε πιο σύγχρονα προγράμματα περιήγησης, 25 00:01:04,230 --> 00:01:08,630 συμπεριλαμβανομένου του Chrome, Edge, στο σύνολό δέσμη των others-- όλα αυτά 26 00:01:08,630 --> 00:01:12,650 ότι μεγάλα τμήματα του άνθρωποι χρησιμοποιούν σήμερα. 27 00:01:12,650 --> 00:01:14,807 Έτσι, δεν υπάρχει κανένας που έχει συσταθεί, εκτός από απλά να πάρει 28 00:01:14,807 --> 00:01:16,890 ένα web server πηγαίνει, για μπορείτε να ξεκινήσετε εργασίας 29 00:01:16,890 --> 00:01:18,420 για το έργο σας, η οποία είναι μεγάλη. 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> Σας προτείνουμε αρκετά σε μεγάλο βαθμό ότι έχετε εξετάσει 32 00:01:24,190 --> 00:01:26,530 χρησιμοποιώντας το Chrome για JavaScript ανάπτυξη ιστοσελίδων, 33 00:01:26,530 --> 00:01:30,260 μόνο και μόνο επειδή προγραμματιστή εργαλεία είναι πραγματικά ισχυρή. 34 00:01:30,260 --> 00:01:33,220 Ως ένα παράδειγμα του τι ακριβώς εννοούμε λέγοντας ανοίξει JavaScript σας 35 00:01:33,220 --> 00:01:38,600 console-- αν πάτε στο Chrome και θα εξετάσουμε κάθε ιστοσελίδα, 36 00:01:38,600 --> 00:01:43,897 και αριστερό κλικ Επιθεωρήστε Στοιχείο, και στη συνέχεια, 37 00:01:43,897 --> 00:01:46,730 πηγαίνετε σε αυτό το μικρό drop-down εδώ και κάνετε κλικ στο Console, 38 00:01:46,730 --> 00:01:50,660 θα δείτε τι ανοίγει μοιάζει πολύ σαν μια γραμμή εντολών που 39 00:01:50,660 --> 00:01:53,720 μπορεί να δει στο Mac σας, ή στην ταυτότητα. 40 00:01:53,720 --> 00:01:59,260 Και έτσι απλά, μπορούμε Τύπος εντολές εδώ, όπως Clear, 41 00:01:59,260 --> 00:02:01,350 και άλλες εντολές όπως αυτό. 42 00:02:01,350 --> 00:02:04,267 Μπορούμε να δημιουργήσουμε μεταβλητές, όπως θα δούμε αργότερα σε JavaScript. 43 00:02:04,267 --> 00:02:07,100 Και έτσι τίποτα που μπορούμε να κάνουμε σε JavaScript, που μπορούμε να κάνουμε με την κονσόλα, 44 00:02:07,100 --> 00:02:11,430 και αυτό είναι ένα σούπερ βολικό τρόπο για να αρχίσετε να παίζετε γύρω με τα API 45 00:02:11,430 --> 00:02:15,760 και να πάρει άνετα με JavaScript δεξιά από το ρόπαλο. 46 00:02:15,760 --> 00:02:18,290 Δεν έχει οριστεί μέχρι που απαιτούνται, το οποίο είναι πραγματικά ωραίο. 47 00:02:18,290 --> 00:02:18,790 Δροσερός. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 Φοβερός. 50 00:02:22,880 --> 00:02:24,780 >> Έτσι, μόνο ένα περισσότερο πράγμα για να προσθέσετε. 51 00:02:24,780 --> 00:02:27,780 Αν έχετε οποιαδήποτε questions-- υπάρχουν πολλοί από εσάς που δεν είναι εδώ ζουν, 52 00:02:27,780 --> 00:02:31,232 διστάσετε να στείλετε email ΕΜΕΙΣ-- αυτά Οι διευθύνσεις ηλεκτρονικού ταχυδρομείου μας. 53 00:02:31,232 --> 00:02:33,190 Αν έχετε απορίες δεν θέλετε να μας ρωτήσετε, 54 00:02:33,190 --> 00:02:36,160 όπως, oh έχω ένα bug στον κώδικα μου, ή κάτι τέτοιο 55 00:02:36,160 --> 00:02:39,270 αυτό είναι λίγο πιο συγκεκριμένος, ίσως Google. 56 00:02:39,270 --> 00:02:42,340 Υπάρχουν πολλοί μεγάλοι πόροι σχετικά με το Web Audio API εκεί έξω. 57 00:02:42,340 --> 00:02:44,089 Είναι πολύ καλά τεκμηριώνονται και αυτό είναι να 58 00:02:44,089 --> 00:02:47,194 που χρησιμοποιείται από έναν τόνο των ανθρώπων σε τη βιομηχανία, και οι άνθρωποι που είναι ακριβώς 59 00:02:47,194 --> 00:02:48,610 κτίριο διασκέδαση πράγματα για τον εαυτό τους. 60 00:02:48,610 --> 00:02:51,306 Έτσι, θα πρέπει να υπάρχει μια πολύ των πόρων εκεί έξω. 61 00:02:51,306 --> 00:02:53,040 Φοβερός. 62 00:02:53,040 --> 00:02:56,100 >> Cool, οπότε γιατί το Web Audio API; 63 00:02:56,100 --> 00:02:59,840 Αυτό το διάγραμμα είναι λίγο μιας εξέλιξης του τρόπου 64 00:02:59,840 --> 00:03:04,100 ήχου στο διαδίκτυο έχει αυξηθεί την πάροδο του χρόνου. 65 00:03:04,100 --> 00:03:13,080 Bgsound ήταν σαν την αρχική ετικέτα HTML ότι ο Internet Explorer που χρησιμοποιείται για να υποστηρίξει. 66 00:03:13,080 --> 00:03:16,790 Επέτρεψε μόνο για πολύ βασικούς ήχους, η λειτουργικότητα δεν ήταν πολύ ισχυρή, 67 00:03:16,790 --> 00:03:19,380 και δεν μπορούσε να κάνει περίπλοκη αλληλουχίας, 68 00:03:19,380 --> 00:03:21,890 ή τον έλεγχο όταν ο ήχος άρχισε και σταμάτησε πολύ δυναμικά. 69 00:03:21,890 --> 00:03:23,930 Έτσι, δεν ήταν ιδιαίτερα καλά αναπτυγμένο. 70 00:03:23,930 --> 00:03:27,470 Στη συνέχεια, μετά από αυτό, το Flash ήρθε along-- η οποία, 71 00:03:27,470 --> 00:03:31,712 Είμαι βέβαιος ότι εσείς είστε όλοι εξοικειωμένοι με Flash-- ίσως όχι πώς λειτουργεί, 72 00:03:31,712 --> 00:03:32,920 αλλά έχετε σίγουρα δει. 73 00:03:32,920 --> 00:03:35,586 Έχετε να ενημερώσετε Flash σας Plug-in, όλα τα τέτοιου είδους πράγματα, 74 00:03:35,586 --> 00:03:40,110 και ότι σίγουρα διεύρυνε το φάσμα της λειτουργικότητας που ήταν διαθέσιμο. 75 00:03:40,110 --> 00:03:45,370 Αλλά κάνει ο χρήστης εγκαταστήσει ένα plug-in είναι σίγουρα 76 00:03:45,370 --> 00:03:48,480 Ένα μειονέκτημα συμπεριλαμβανομένων Flash στην αίτησή σας, σωστά; 77 00:03:48,480 --> 00:03:52,410 Επειδή τότε είστε εξαρτάται από το χρήστης πηγαίνει και να βρει αυτό το plug-in, 78 00:03:52,410 --> 00:03:54,660 και πιθανόν να μετατραπεί μακριά από αυτό το επιπλέον βήμα 79 00:03:54,660 --> 00:03:56,640 θα πρέπει να λάβει για να χρησιμοποιήσετε την εφαρμογή σας. 80 00:03:56,640 --> 00:04:01,270 Και τότε θα μπορούσε να υπάρξει μια ενημέρωση ότι θα σπάσει ολόκληρη την αίτησή σας, 81 00:04:01,270 --> 00:04:03,880 και καταλήγει να είναι ένας εφιάλτης για τον κύριο του έργου, πάρα πολύ. 82 00:04:03,880 --> 00:04:06,230 Έτσι, αυτό ήταν ένα οδόφραγμα. 83 00:04:06,230 --> 00:04:10,480 >> Και στη συνέχεια, μετά από αυτό ήρθε μαζί, η ετικέτα HTML ήχου, η οποία 84 00:04:10,480 --> 00:04:16,579 είναι ένα χαρακτηριστικό γνώρισμα των πιο σύγχρονων HTML-- οποία είναι βέβαιο ότι επέτρεψαν πολλά περισσότερα πράγματα, 85 00:04:16,579 --> 00:04:20,050 αλλά ακόμη και τα πράγματα που θα μπορούσατε να κάνετε εκεί ήταν λίγο περιορίζεται μόνο 86 00:04:20,050 --> 00:04:22,730 ως αποτέλεσμα των πραγμάτων HTML ότι ήταν ικανός. 87 00:04:22,730 --> 00:04:26,060 Έτσι, όταν το JavaScript API, το Web Audio API, 88 00:04:26,060 --> 00:04:29,290 έγινε ένα πρότυπο πρακτική σε όλους τους φυλλομετρητές, 89 00:04:29,290 --> 00:04:32,490 ότι διεύρυνε πραγματικά το σύνολο των ευκαιριών για τους προγραμματιστές 90 00:04:32,490 --> 00:04:36,590 για να πάρει πραγματικά στο κτίριο δροσερά πράγματα για το web. 91 00:04:36,590 --> 00:04:39,220 Για ένα μεγάλο χρονικό διάστημα είχε υπάρξει Ήταν πολύ ισχυρά εργαλεία 92 00:04:39,220 --> 00:04:44,360 για εγγενείς εφαρμογές ήχου, like-- ο καθένας ξέρει το GarageBand, 93 00:04:44,360 --> 00:04:48,360 και τότε προφανώς υπάρχουν περισσότερες επαγγελματικές εφαρμογές ήχου ανάμειξη, 94 00:04:48,360 --> 00:04:49,640 και τέτοιου είδους πράγματα. 95 00:04:49,640 --> 00:04:52,690 Αλλά δεν υπήρχε πραγματικά καλό Cloud-- δεν 96 00:04:52,690 --> 00:04:55,811 Cloud, ναι, υποθέτω Cloud-- web-based πλατφόρμα 97 00:04:55,811 --> 00:04:58,310 ότι θα επιτρέψει στους προγραμματιστές να να δημιουργήσουν εφαρμογές για τους ανθρώπους 98 00:04:58,310 --> 00:05:00,570 να κάνει ανάμειξη ήχου. 99 00:05:00,570 --> 00:05:03,960 Και όπως ο ίδιος θα σας δείξει αργότερα, το Web Audio API 100 00:05:03,960 --> 00:05:07,470 επιτρέπει πραγματικά ισχυρό τα πράγματα να συμβούν πραγματικά απλά, 101 00:05:07,470 --> 00:05:09,597 το οποίο είναι αρκετά δροσερό. 102 00:05:09,597 --> 00:05:12,680 Έτσι, αυτή είναι η εντολή προς το γιατί πρέπει να παρακολουθείτε το υπόλοιπο του σεμιναρίου, 103 00:05:12,680 --> 00:05:14,350 βασικά. 104 00:05:14,350 --> 00:05:17,880 >> Και τώρα, πάω να μιλήσω για μερικοί JavaScript-- μόνο τα βασικά στοιχεία 105 00:05:17,880 --> 00:05:20,240 της γλώσσας, έτσι ώστε να μπορούμε να είμαστε στην ίδια σελίδα 106 00:05:20,240 --> 00:05:22,470 όταν μιλάμε για το API λίγο αργότερα. 107 00:05:22,470 --> 00:05:23,260 Δροσερός. 108 00:05:23,260 --> 00:05:26,192 >> Έτσι, αυτό είναι μια περίληψη. 109 00:05:26,192 --> 00:05:27,150 Ξέχασα αυτή ήταν εδώ. 110 00:05:27,150 --> 00:05:27,510 Ναι. 111 00:05:27,510 --> 00:05:27,870 >> Χιου Zabriskie: Υπάρχουν δύο διαφάνειες εδώ. 112 00:05:27,870 --> 00:05:30,245 >> SAM ΠΡΑΣΙΝΟ: Αυτή είναι η περίληψη μερικών από τους περιορισμούς 113 00:05:30,245 --> 00:05:35,220 των άλλων δεσμευτικών, παλιές μεθόδους. 114 00:05:35,220 --> 00:05:37,828 Και στη συνέχεια, τώρα, έχουμε αυτά τα πράγματα. 115 00:05:37,828 --> 00:05:40,011 Δροσερός. 116 00:05:40,011 --> 00:05:40,510 Φοβερός. 117 00:05:40,510 --> 00:05:43,200 >> Έτσι, το JavaScript πρώτης ανάγκης. 118 00:05:43,200 --> 00:05:47,230 Τα πρώτα πράγματα πρώτα, υπάρχει μια αρκετά σημαντική διαφορά 119 00:05:47,230 --> 00:05:49,940 σε JavaScript έναντι μιας γλώσσα όπως C, με τον τρόπο 120 00:05:49,940 --> 00:05:52,050 ότι οι μεταβλητές που δημιουργούνται. 121 00:05:52,050 --> 00:05:55,634 Έτσι σε C, έχουμε συνηθίσει να έχουν για να πληκτρολογήσετε τις μεταβλητές μας, σωστά; 122 00:05:55,634 --> 00:05:57,800 Και δεν εννοώ τον τύπο όπως πληκτρολογήστε τους, εννοώ τύπου 123 00:05:57,800 --> 00:06:01,900 όπως τους αναθέτουν type-- έννοια όπως, ένας int, float ένα, μια χαρα. 124 00:06:01,900 --> 00:06:05,210 Στην C, ήμασταν πραγματικά χρησιμοποιούνται για την να χρειάζεται να δημιουργήσουμε μια μεταβλητή 125 00:06:05,210 --> 00:06:09,690 και στη συνέχεια να επιμείνουμε σε αυτόν τον τύπο για το Ο συνολικός χρόνος που χρησιμοποιεί το εν λόγω μεταβλητή. 126 00:06:09,690 --> 00:06:13,990 Και αυτό δεν είναι απαραιτήτως χειρότερο, αλλά είναι μάλλον δύσκολο να χρησιμοποιήσετε. 127 00:06:13,990 --> 00:06:16,190 Ένα από τα δροσερά χαρακτηριστικά γνωρίσματα της JavaScript είναι 128 00:06:16,190 --> 00:06:19,740 ότι οι μεταβλητές είναι αυτό που ονομάζεται "δυναμικά δακτυλογραφημένες," η οποία 129 00:06:19,740 --> 00:06:22,500 σημαίνει ότι μπορώ να δημιουργήσει ένα μεταβλητή με την εν λόγω σύνταξη, 130 00:06:22,500 --> 00:06:25,800 varX ισούται 5, για παράδειγμα. 131 00:06:25,800 --> 00:06:27,790 Αυτό που αρχικά δημιουργεί ένας ακέραιος variable-- 132 00:06:27,790 --> 00:06:29,870 ακριβώς κάτω από το κουκούλα somewhere-- αλλά εγώ 133 00:06:29,870 --> 00:06:33,040 μπορεί να αλλάξει αυτήν τη μεταβλητή να αναφέρεται σε ένα κορδόνι 134 00:06:33,040 --> 00:06:35,820 χωρίς να κάνει κάτι τέτοιο δημιουργώντας μια νέα μεταβλητή. 135 00:06:35,820 --> 00:06:37,880 Δεν χρειάζεται να ανησυχείτε σχετικά με το είδος αλλαγής. 136 00:06:37,880 --> 00:06:45,440 JavaScript ξέρει ότι ο τύπος του αλλάξει, και αυτό συμβαίνει δυναμικά. 137 00:06:45,440 --> 00:06:48,510 >> Έτσι, υπάρχουν οφέλη και τα μειονεκτήματα σε αυτό, 138 00:06:48,510 --> 00:06:51,250 όπως κάποιος που έχει δουλέψει σε Τη Javascript για μια στιγμή μπορεί να ξέρει. 139 00:06:51,250 --> 00:06:53,600 Υπάρχουν φορές που ίσως κατά λάθος 140 00:06:53,600 --> 00:06:57,720 αλλάξετε τον τύπο μιας μεταβλητής και Δεν χειριστεί αυτό το είδος αλλαγής, 141 00:06:57,720 --> 00:07:01,120 και έπειτα το JavaScript σας μπορεί να crash-- ή εξαίρεση 142 00:07:01,120 --> 00:07:06,070 να πεταχτούν, γιατί θα έχετε την λάθος είδος πότε αναμένετε έναν τύπο. 143 00:07:06,070 --> 00:07:07,040 Δροσερός. 144 00:07:07,040 --> 00:07:11,470 >> Έτσι, scoping-- η οποία είναι παρόμοια, αν θέλουμε θυμούνται τις πρώτες εβδομάδες, κατά τη διάρκεια, 145 00:07:11,470 --> 00:07:15,420 αναφέρεται στο πόσο ορατή μια μεταβλητή είναι και σε ποια περιοχή του κώδικα. 146 00:07:15,420 --> 00:07:18,400 Όλα αυτά φαίνεται πολύ παρόμοια με τον τρόπο που φαίνεται στο C. 147 00:07:18,400 --> 00:07:24,755 Έτσι, οι μεταβλητές scoped γενικά μέσα σε αγκύλες μέσα σε μια συνάρτηση, 148 00:07:24,755 --> 00:07:27,005 και στη συνέχεια υπάρχουν επίσης σε παγκόσμιο επίπεδο-Scoped μεταβλητές που 149 00:07:27,005 --> 00:07:29,171 are-- αν γράψετε μια μεταβλητή εκτός από μια λειτουργία, 150 00:07:29,171 --> 00:07:31,790 θα είναι ορατό στο ολόκληρο το κείμενο. 151 00:07:31,790 --> 00:07:35,840 >> Μία διαφορά μεταξύ JavaScript και Γ ειδικότερα, 152 00:07:35,840 --> 00:07:40,280 είναι ότι αν έχετε δηλώσει μια παγκόσμια μεταβλητή οπουδήποτε σε ένα αρχείο κειμένου 153 00:07:40,280 --> 00:07:43,324 είναι ορατό σε όλες τις λειτουργίες εντός της εν λόγω αρχείο κειμένου. 154 00:07:43,324 --> 00:07:44,240 Αυτό είναι σωστό, έτσι δεν είναι; 155 00:07:44,240 --> 00:07:46,330 >> Χιου Zabriskie: Ναι. 156 00:07:46,330 --> 00:07:49,120 >> SAM ΠΡΑΣΙΝΟ: Έτσι, αυτό είναι επίσης μια μικρή funky λίγο σε σύγκριση με το Γ, 157 00:07:49,120 --> 00:07:52,660 όπου είχαμε πάντα να έχουμε μας ορισμούς μεταβλητών πάνω από τις θέσεις 158 00:07:52,660 --> 00:07:53,770 χρησιμοποιήθηκαν. 159 00:07:53,770 --> 00:07:57,957 Αυτό δεν είναι ένας κανόνας που έχει επιβληθεί πια, έτσι, λίγο διαφορετική. 160 00:07:57,957 --> 00:08:00,540 Και πάλι απλά για να τονίσω και πάλι παγκόσμιο ή τοπικό variables-- 161 00:08:00,540 --> 00:08:03,457 πολύ παρόμοια με C. Θα μπορούσατε να έχετε δύο μεταβλητές με το ίδιο όνομα, 162 00:08:03,457 --> 00:08:06,540 και έχει ένα από τα ονόματά τους να επισκιαστεί από μια τοπική μεταβλητή εάν ένα από αυτά 163 00:08:06,540 --> 00:08:07,546 ήταν παγκόσμια. 164 00:08:07,546 --> 00:08:09,420 Έτσι, παρόμοιο είδος προβλήματα που κάποιοι από εσάς 165 00:08:09,420 --> 00:08:11,920 μπορεί να τρέξει σε σε ορισμένες του προβλήματός σας παρουσιάζει μέχρι στιγμής. 166 00:08:11,920 --> 00:08:14,450 Cool, έτσι ώστε να είναι μεταβλητές. 167 00:08:14,450 --> 00:08:20,310 >> Ροή ελέγχου, πράγμα που σημαίνει, όπως, αν-else-- λογική stuff-- και βρόχους. 168 00:08:20,310 --> 00:08:24,510 Έτσι για να αρχίσει με, αυτό είναι ό, τι αν-else δηλώσεις μοιάζουν σε JavaScript. 169 00:08:24,510 --> 00:08:29,750 Η τοποθέτηση των διαφόρων πραγμάτων στις γραμμές δεν είναι σημαντική. 170 00:08:29,750 --> 00:08:34,409 Αυτή είναι μόνο μία από τις συμβάσεις για τον τρόπο με τον κωδικό δομή εμείς. 171 00:08:34,409 --> 00:08:38,634 Ακριβώς όπως και στη C, έχουμε ένα "αν", ανέφερε δήλωση παρένθεση. 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 Αυτό δεν είναι αυτό που ήθελα να κάνω. 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 Το έκανα και πάλι. 176 00:08:45,550 --> 00:08:46,841 >> Χιου Zabriskie: Προσπαθώντας να βγείτε; 177 00:08:46,841 --> 00:08:49,770 SAM ΠΡΑΣΙΝΟ: Όχι, είμαι απλώς προσπαθεί να μεγεθύνετε. 178 00:08:49,770 --> 00:08:50,660 Δεν πειράζει. 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> Έτσι, έχουμε μια "if", και έχουμε μια κατάσταση στο εσωτερικό του 181 00:08:59,370 --> 00:09:03,130 ότι είναι αληθής ή ψευδής, και ότι καθορίζει εάν ή όχι 182 00:09:03,130 --> 00:09:04,510 μπαίνουμε ότι μπλοκ του κώδικα. 183 00:09:04,510 --> 00:09:09,860 Και επίσης, έχουμε ένα άλλο, αν και ένα άλλο, ακριβώς όπως έχουμε συνηθίσει να σε C. 184 00:09:09,860 --> 00:09:14,010 >> Μπορείτε, επίσης, θα πρέπει να είναι αρκετά άνετο δεξιά από το ρόπαλο με βρόχους, 185 00:09:14,010 --> 00:09:16,440 επειδή επίσης να εξετάσουμε μοιάζει πολύ με C φαίνεται. 186 00:09:16,440 --> 00:09:19,600 Αλλά θα παρατηρήσετε και πάλι ότι εμείς έχουν, αντί int initializations, 187 00:09:19,600 --> 00:09:22,570 έχουμε ενεργοποιήσεις var. 188 00:09:22,570 --> 00:09:24,650 Και υποθέτω ότι έχετε να είναι προσεκτικοί για να κάνουν 189 00:09:24,650 --> 00:09:28,460 φροντίστε να μην αλλάξετε την τιμή Ι από έναν int σε μια σειρά, 190 00:09:28,460 --> 00:09:31,780 για παράδειγμα, γιατί αυτό πρόκειται να προκαλέσει παράξενο συμπεριφορά ίσως δεν 191 00:09:31,780 --> 00:09:32,280 αναμένω. 192 00:09:32,280 --> 00:09:35,750 Αλλά αυτό θα πρέπει να εξετάσουμε αρκετά εξοικειωμένοι, καθώς και. 193 00:09:35,750 --> 00:09:39,460 >> Έτσι, αυτό είναι όπου τα πράγματα αρχίζουν να να πάρει λίγο τρελό το JavaScript 194 00:09:39,460 --> 00:09:44,920 για κάποιον που πηγαίνει από το ένα φόντο C. Υπάρχουν λειτουργίες 195 00:09:44,920 --> 00:09:48,070 σε JavaScript, και υπάρχει ένας τρόπος να κηρύξει μια λειτουργία που φαίνεται 196 00:09:48,070 --> 00:09:50,361 είδος παρόμοιο με C, και τότε υπάρχει ένα άλλο που 197 00:09:50,361 --> 00:09:52,450 Φαίνεται είδος διαφορετικό. 198 00:09:52,450 --> 00:09:54,930 >> Η πρώτη έκδοση, το οποίο μπορούμε να δούμε εδώ, 199 00:09:54,930 --> 00:09:59,260 είναι το είδος των C-όπως, όπου λέμε, αυτό είναι μια συνάρτηση, 200 00:09:59,260 --> 00:10:01,490 δώστε ένα όνομα, να δώσει ο αριθμός των επιχειρημάτων, 201 00:10:01,490 --> 00:10:05,150 και στη συνέχεια τα περιεχόμενα της συνάρτησης πηγαίνετε μέσα σε αυτά τα άγκιστρα. 202 00:10:05,150 --> 00:10:08,850 Θα δούμε ένα παράδειγμα επιχειρήματα σε μόλις ένα δευτερόλεπτο. 203 00:10:08,850 --> 00:10:13,420 >> Ότι, στην επόμενη γραμμή, βλέπουμε, OH, εδώ είναι μια μεταβλητή που ονομάζεται "myFunction" 204 00:10:13,420 --> 00:10:17,546 και θα είναι ίσο με αυτό γενικές thing-- function-- ότι 205 00:10:17,546 --> 00:10:19,170 δεν φαίνεται να έχουν καμία εξέλιξη. 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 Ο λόγος που είναι διαφορετική από C είναι ότι το JavaScript 208 00:10:26,080 --> 00:10:30,040 Είναι αυτό που ονομάζεται λειτουργική γλώσσα, ή έχει λειτουργικά στοιχεία, πράγμα που σημαίνει 209 00:10:30,040 --> 00:10:33,510 ότι οι λειτουργίες είναι πραγματικά αξίες. 210 00:10:33,510 --> 00:10:39,520 Και αυτό σημαίνει ότι μπορούμε να θέσουμε μια μεταβλητή να ισούται μια συνάρτηση 211 00:10:39,520 --> 00:10:43,210 και στη συνέχεια να προχωρήσουμε αυτή την λειτουργία γύρω, να περάσει ως επιχείρημα, 212 00:10:43,210 --> 00:10:46,550 κάνει όλα τα είδη ουσίας όπως αυτό με τις λειτουργίες. 213 00:10:46,550 --> 00:10:49,682 >> Ένα άλλο πράγμα που πρέπει να note-- Οι λειτουργίες γραπτή 214 00:10:49,682 --> 00:10:51,140 με έναν ορισμένο αριθμό επιχειρημάτων. 215 00:10:51,140 --> 00:10:54,056 Θα δούμε ένα παράδειγμα μιας συνάρτησης με ένα επιχείρημα στην επόμενη διαφάνεια. 216 00:10:54,056 --> 00:10:56,720 Αλλά δεν θα το JavaScript φωνάζω σε σας αν προσπαθήσετε 217 00:10:56,720 --> 00:10:59,330 να χρησιμοποιήσετε μια συνάρτηση με το λανθασμένο αριθμό των επιχειρημάτων. 218 00:10:59,330 --> 00:11:05,310 Θα κάνουμε ακριβώς για να γίνει η κάνει, πράγμα που σημαίνει ότι αν περάσει, 219 00:11:05,310 --> 00:11:09,410 μπορείτε να καλέσετε μια συνάρτηση που αναμένει το επιχείρημα, χωρίς επιχειρηματολογία, όλα αυτά που 220 00:11:09,410 --> 00:11:13,990 θα συμβεί είναι ότι θα κάνει το καλύτερο δυνατό για να προσπαθήσουμε και να εκτελέσει αυτόν τον κώδικα, 221 00:11:13,990 --> 00:11:16,541 και αν λειτουργεί τελικά σε εξαίρεσης ή σφάλμα, 222 00:11:16,541 --> 00:11:19,790 αυτό θα ρίξει την εν λόγω εξαίρεση και να κρατήσει μόνο going-- η οποία είναι απλώς ένας από τους τρόπους 223 00:11:19,790 --> 00:11:21,070 ότι το JavaScript λειτουργεί. 224 00:11:21,070 --> 00:11:21,781 Ναι. 225 00:11:21,781 --> 00:11:24,207 >> Κοινό: Τι θα συμβεί αν υπάρχουν πάρα πολλά επιχειρήματα; 226 00:11:24,207 --> 00:11:26,040 SAM ΠΡΑΣΙΝΟ: Έτσι, η ερώτημα ήταν, τι θα συμβεί 227 00:11:26,040 --> 00:11:27,380 αν υπάρχουν πάρα πολλά επιχειρήματα; 228 00:11:27,380 --> 00:11:29,171 Και η απάντηση είναι ότι Θα είναι ακριβώς το JavaScript 229 00:11:29,171 --> 00:11:32,120 αγνοούν αυτά που είναι μετά από αυτά που περίμενε. 230 00:11:32,120 --> 00:11:36,420 Θα προσπαθήσουμε να εκτελέσει τη λειτουργία αποκαλούν σαν να ήταν μόνο τα δύο πρώτα. 231 00:11:36,420 --> 00:11:37,075 Δικαίωμα? 232 00:11:37,075 --> 00:11:37,700 >> Χιου Zabriskie: Αυτό είναι σωστό, ναι. 233 00:11:37,700 --> 00:11:39,449 Ομοίως, αν υπάρχει είναι πολύ λίγοι επιχειρήματα, 234 00:11:39,449 --> 00:11:42,640 Είναι ακριβώς το είδος της δίνει null σε όλα τα επιχειρήματα δεν έχει οποιεσδήποτε τιμές 235 00:11:42,640 --> 00:11:43,660 για. 236 00:11:43,660 --> 00:11:45,810 >> SAM ΠΡΑΣΙΝΟ: η οποία μπορεί να στην πραγματικότητα να είναι βολικό, αν 237 00:11:45,810 --> 00:11:49,060 Θέλετε να γράψετε μια λειτουργία που παίρνει ένα μεταβλητό αριθμό επιχειρήματα. 238 00:11:49,060 --> 00:11:55,830 Μπορείτε να ορίσετε προεπιλεγμένες τιμές ο ορισμός της συνάρτησης, 239 00:11:55,830 --> 00:11:59,060 και μπορεί να αγνοήσει το γεγονός ότι η είσοδος δεν είναι εκεί. 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 Γι 'αυτό θέλω να μιλήσω λίγο περισσότερα για αυτή την τελευταία σφαίρα 242 00:12:04,000 --> 00:12:05,541 σημείο, που είναι οι συναρτήσεις είναι τιμές. 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 Αυτό είναι ένα παράδειγμα που είναι λίγο το μυαλό-blowing 245 00:12:11,010 --> 00:12:14,880 αν απλά το διαβάσετε, και δεν νομίζω για το τι συμβαίνει για ένα δευτερόλεπτο. 246 00:12:14,880 --> 00:12:17,910 Έτσι, ας ρίξουμε μια ματιά μόνο στο η πρώτη γραμμή εδώ. 247 00:12:17,910 --> 00:12:24,360 Έχουμε αυτήν τη μεταβλητή, f1, ότι λέμε είναι μια λειτουργία που κάνει αυτό το πράγμα. 248 00:12:24,360 --> 00:12:28,535 Και τα περιεχόμενα της συνάρτησης Οι console.log («γεια σου»). 249 00:12:28,535 --> 00:12:32,220 Μπορείτε να σκεφτείτε console.log όπως η JavaScript ισοδύναμο printf. 250 00:12:32,220 --> 00:12:35,510 Λοιπόν, τι θα συμβεί, αν εμείς εκτελέσετε αυτόν τον κώδικα στον browser μας, 251 00:12:35,510 --> 00:12:37,530 αυτό θα εκτυπώσετε μια σειρά. 252 00:12:37,530 --> 00:12:39,342 Μπορώ να αποδείξει ότι. 253 00:12:39,342 --> 00:12:42,300 Κοινό: Με ημερολόγιο, όμως, ότι δεν σημαίνει ότι είναι καταγράφεται κάπου; 254 00:12:42,300 --> 00:12:42,550 SAM ΠΡΑΣΙΝΟ: Ναι. 255 00:12:42,550 --> 00:12:44,216 Γι 'αυτό και θα σας δείξω τι πρόκειται να συμβεί. 256 00:12:44,216 --> 00:12:48,085 Έτσι, το ερώτημα ήταν, τι κάνει log σημαίνει; 257 00:12:48,085 --> 00:12:51,262 >> Χιου Zabriskie: Έτσι console.log Είναι σαν printf για C. 258 00:12:51,262 --> 00:12:52,970 SAM ΠΡΑΣΙΝΟ: Έτσι console.log είναι σαν printf, 259 00:12:52,970 --> 00:12:59,240 έτσι εάν έχω αυτό το console.log («γεια σου»), και καλώ ότι, το string "γεια" 260 00:12:59,240 --> 00:13:00,730 παίρνει εκτυπώνεται στην κονσόλα. 261 00:13:00,730 --> 00:13:03,340 Αυτή είναι η κονσόλα. 262 00:13:03,340 --> 00:13:05,930 Είναι ακριβώς όπως printf, όπου εκτυπώνει τυποποιημένα. 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 Και θα δούμε σε ένα λεπτό, αλλά αυτό είναι πραγματικά 265 00:13:11,230 --> 00:13:16,529 αναφερόμενος στο αντικείμενο κονσόλα, και κλήση μιας μεθόδου σε αυτό το αντικείμενο. 266 00:13:16,529 --> 00:13:18,320 Αυτό θα κάνει πιο λογικό σε ένα λεπτό όταν είμαστε 267 00:13:18,320 --> 00:13:20,660 έχετε να μιλάμε για αντικείμενα σε JavaScript, 268 00:13:20,660 --> 00:13:22,509 αλλά σκέφτηκα ότι θα ήθελα να αναφέρω μόνο αυτό. 269 00:13:22,509 --> 00:13:24,300 Χιου Zabriskie: Είμαστε που χρησιμοποιείται στο σημείο Γ, right-- 270 00:13:24,300 --> 00:13:27,580 γράφουμε συνήθως ένα μεγάλο πρόγραμμα στην κύρια να κάνει τίποτα. 271 00:13:27,580 --> 00:13:30,700 Αλλά τι είναι δροσερό το JavaScript είναι σας έχουν αυτό το είδος του διερμηνέα ότι 272 00:13:30,700 --> 00:13:33,620 τρέχει σε πραγματικό χρόνο, έτσι ώστε να Χρειάζονται μόνο γραμμή προς γραμμή, 273 00:13:33,620 --> 00:13:35,320 απλά μπορεί να ερμηνεύσει ότι επί τόπου. 274 00:13:35,320 --> 00:13:37,403 Και παρακολουθεί πράγματα που έχουν εκτελεστεί πριν, 275 00:13:37,403 --> 00:13:41,620 έτσι είναι ένα πολύ χρήσιμο εργαλείο για την χρησιμοποιήστε console.log, ή την κονσόλα, 276 00:13:41,620 --> 00:13:46,870 γενικά, για ακριβώς παίζει γύρω με JavaScript. 277 00:13:46,870 --> 00:13:51,420 >> SAM ΠΡΑΣΙΝΟ: Έτσι, πηγαίνει πίσω σε αυτό example-- τη δεύτερη γραμμή κώδικα 278 00:13:51,420 --> 00:13:55,320 εδώ είναι αρκετά μυαλό- στο κεφάλι μου. 279 00:13:55,320 --> 00:13:59,790 Την πρώτη φορά που διάβασα αυτό, Ήταν σαν, τι συμβαίνει; 280 00:13:59,790 --> 00:14:04,580 Έτσι, αυτό που συμβαίνει είναι, αυτό Δήλωση λειτουργία λέει, 281 00:14:04,580 --> 00:14:10,170 Έχω μια συνάρτηση που ονομάζεται F2 ότι είναι αναμένει ένα επιχείρημα, στ, 282 00:14:10,170 --> 00:14:12,990 και στη συνέχεια καλεί η συνάρτηση, f, η οποία 283 00:14:12,990 --> 00:14:17,652 ψηφίστηκε σε αυτό ως ένα επιχείρημα με το ίδιο χωρίς επιχειρήματα. 284 00:14:17,652 --> 00:14:19,110 Έτσι, ότι θα μπορούσε να έχει προκαλέσει σύγχυση. 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 Αν το καταλάβουμε αυτό και f2 f1 παίρνει ως επιχείρημα, και στη συνέχεια στο εσωτερικό της F2, 287 00:14:28,400 --> 00:14:31,190 στ παίρνει called-- οποία μέσα ότι αυτή η γραμμή του κώδικα, 288 00:14:31,190 --> 00:14:34,192 μετά από αυτές τις δύο γραμμές κώδικα, οδηγεί σε "γεια" 289 00:14:34,192 --> 00:14:35,400 που εκτυπώνεται στην κονσόλα. 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> Το γεγονός ότι μπορούμε να περάσουμε λειτουργιών περίπου ως τιμές 292 00:14:44,910 --> 00:14:47,870 καταλήγει να είναι ένα από τα πιο ισχυρά χαρακτηριστικά της JavaScript 293 00:14:47,870 --> 00:14:49,700 ως γλώσσα προγραμματισμού. 294 00:14:49,700 --> 00:14:52,782 Έξω από όλα τα τρομερά πράγματα που μπορεί να κάνει, 295 00:14:52,782 --> 00:14:54,990 απλά ως ένα χαρακτηριστικό του γλώσσα αφορά τον τρόπο 296 00:14:54,990 --> 00:14:58,400 ότι θα κάνει τα πράγματα εύκολα για τον προγραμματισμό και επιτρέπει 297 00:14:58,400 --> 00:15:01,060 για πράγματα που δεν είναι ιδιαίτερα καλά προσαρμοσμένη στο διαδίκτυο, 298 00:15:01,060 --> 00:15:04,500 λειτουργικό προγραμματισμό και λειτουργικό πτυχές του προγραμματισμού JavaScript 299 00:15:04,500 --> 00:15:07,130 είναι ένα από τα πιο ισχυρές έννοιες που 300 00:15:07,130 --> 00:15:11,030 υπάρχει σε JavaScript-- αν με ρωτάτε. 301 00:15:11,030 --> 00:15:11,960 Δροσερός. 302 00:15:11,960 --> 00:15:13,534 >> Έτσι, επόμενο πράγμα. 303 00:15:13,534 --> 00:15:16,450 Εκτός του ότι είναι λειτουργική, Υπάρχουν επίσης στοιχεία JavaScript 304 00:15:16,450 --> 00:15:20,510 που είναι object-oriented, η οποία είναι ένα από τα πολύ 305 00:15:20,510 --> 00:15:23,800 δημοφιλείς λέξεις buzz στην επιστήμη των υπολογιστών. 306 00:15:23,800 --> 00:15:27,040 Αντικειμενοστραφής προγραμματισμός είναι ένα πολύ δημοφιλές πράγμα. 307 00:15:27,040 --> 00:15:34,210 JavaScript έχει μια έκδοση του ότι, όπου πιστεύω ότι κάθε τιμή είναι επίσης 308 00:15:34,210 --> 00:15:41,475 ένα αντικείμενο, το οποίο σημαίνει ότι κάθε αντικείμενο τυλίγει μαζί κάποιο αριθμό των αξιών. 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 Έτσι, για αξίες που είναι απλές, όπως ένας ακέραιος, όπως varX ισούται με 5, 311 00:15:49,750 --> 00:15:52,250 ότι αντικείμενο αναδιπλώνεται μόνο ότι μια τιμή. 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> Αλλά μπορούμε επίσης να φανταστούμε μια κατάσταση where-- μπορούμε να σκεφτούμε καταστάσεις σε C 314 00:15:59,036 --> 00:16:00,910 όπου θέλαμε να κάνουμε κάτι με structs, 315 00:16:00,910 --> 00:16:03,285 για παράδειγμα, που αναδιπλώνεται αρκετές αξιών μαζί και μάρκες 316 00:16:03,285 --> 00:16:05,870 είναι πολύ εύκολο να περάσει γύρω από τα πράγματα. 317 00:16:05,870 --> 00:16:09,270 Αυτό είναι όταν ένα αντικείμενο είναι σε JavaScript. 318 00:16:09,270 --> 00:16:12,340 >> Είναι σημαντικό να θυμόμαστε όταν λέω ότι τα αντικείμενα τυλιγμένο 319 00:16:12,340 --> 00:16:15,330 μερικοί αριθμός τιμών μαζί, ότι οι λειτουργίες είναι επίσης 320 00:16:15,330 --> 00:16:21,506 αξίες, που σημαίνει ότι μπορεί να λειτουργεί Επίσης, είναι μέσα από ένα αντικείμενο το JavaScript. 321 00:16:21,506 --> 00:16:26,910 Και ο λόγος που είναι σημαντικό είναι ότι, ενώ συχνά 322 00:16:26,910 --> 00:16:30,290 σκεφτείτε καλώντας μια μέθοδο σε ένα αντικείμενο που είναι 323 00:16:30,290 --> 00:16:35,200 της δημοφιλής όρος από άλλους δημοφιλή αντικειμενοστρεφείς γλώσσες, 324 00:16:35,200 --> 00:16:39,330 μία από τις διαφορές είναι ότι οι εδώ όλα αυτά μια μέθοδος είναι σε JavaScript 325 00:16:39,330 --> 00:16:47,270 είναι μια τιμή που είναι αποθηκευμένη στο εσωτερικό ενός αντικειμένου ότι εκτελεί κάποια action-- ενδεχομένως 326 00:16:47,270 --> 00:16:51,850 χρησιμοποιώντας τις άλλες αξίες που είναι μέσα του αντικειμένου, αλλά δεν είναι απαραίτητα. 327 00:16:51,850 --> 00:16:56,930 Έτσι μπορείτε να φανταστείτε μια κατάσταση, εγώ Υποθέτω ότι σε ένα μικρό κομμάτι από ένα τρελό τρόπο, 328 00:16:56,930 --> 00:17:02,990 όπου θα ονομάζεται μέθοδος μιας αντιταχθεί σε άλλο αντικείμενο, για παράδειγμα. 329 00:17:02,990 --> 00:17:06,010 Έτσι, είναι λίγο funky με αυτόν τον τρόπο. 330 00:17:06,010 --> 00:17:09,369 >> Και μπορείτε επίσης να αλλάξετε τις μεθόδους που σχετίζονται με ένα αντικείμενο 331 00:17:09,369 --> 00:17:13,740 με την ανάθεση αυτής της μεθόδου α νέα λειτουργία, η οποία είναι επίσης 332 00:17:13,740 --> 00:17:18,250 αρκετά διαφορετική από τις άλλες αντικειμενοστρεφείς γλώσσες, όπου 333 00:17:18,250 --> 00:17:21,410 μια φορά δηλώνουμε ένα αντικείμενο και υπόσταση, 334 00:17:21,410 --> 00:17:25,839 δεν μπορούμε να αλλάξουμε τις μεθόδους που είναι που σχετίζονται με αυτό το αντικείμενο πια. 335 00:17:25,839 --> 00:17:28,680 Έτσι ώστε να είναι αρκετά διαφορετική. 336 00:17:28,680 --> 00:17:29,570 Δροσερός. 337 00:17:29,570 --> 00:17:34,010 >> Έτσι, εδώ είναι ένα παράδειγμα, κατ 'αρχάς, ενός αντικειμένου σε δράση. 338 00:17:34,010 --> 00:17:36,390 Αυτό είναι αυτό που ονομάζεται ένα γενικό αντικείμενο, το οποίο 339 00:17:36,390 --> 00:17:39,460 σημαίνει ότι δεν έχει καμία συγκεκριμένο όνομα, δεν έχει μια τάξη, 340 00:17:39,460 --> 00:17:42,190 είναι μερικά μόνο από περιτύλιξη των τιμών. 341 00:17:42,190 --> 00:17:49,790 Και ο τρόπος που φαίνεται είναι, έχουμε Αυτό το εξωτερικό ζεύγος άγκιστρα εδώ 342 00:17:49,790 --> 00:17:57,950 που δείχνουν προς το JavaScript και να πω, αυτό είναι ένα αντικείμενο. 343 00:17:57,950 --> 00:18:02,130 Οι τιμές στο εσωτερικό του είναι το καθένα τιμές στο εσωτερικό 344 00:18:02,130 --> 00:18:04,590 του αντικειμένου που θα πρέπει να τυλιχτούν μαζί. 345 00:18:04,590 --> 00:18:09,180 Και το εσωτερικό του εν λόγω αντικειμένου, τότε έχουμε βασικά ζευγάρια αξίας, 346 00:18:09,180 --> 00:18:13,880 όπου το κλειδί αναφέρεται το όνομα της αξίας εντός του αντικειμένου, 347 00:18:13,880 --> 00:18:16,790 και το άλλο side-- απέναντι από το here-- παχέος εντέρου 348 00:18:16,790 --> 00:18:19,850 είναι η πραγματική αξία ότι θα πρέπει να αποθηκευτεί. 349 00:18:19,850 --> 00:18:26,210 >> Έτσι μπορείτε να δείτε εδώ ότι έχουμε ένα κλειδί που ονομάζεται fn με αξία Σαμ, 350 00:18:26,210 --> 00:18:29,430 ακολουθούμενο από ένα κόμμα, λέγοντας στην επόμενη καταχώρηση. 351 00:18:29,430 --> 00:18:33,560 Στη συνέχεια, ένα κλειδί που ονομάζεται LN, με αξία του πράσινου, 352 00:18:33,560 --> 00:18:35,840 ακολουθούμενο από ένα κόμμα, ακολουθούμενη από "εκτύπωση" 353 00:18:35,840 --> 00:18:43,209 η οποία πρόκειται να έχει μια αξία λειτουργία ότι πρόκειται να κάνει αυτήν τη γραμμή κώδικα. 354 00:18:43,209 --> 00:18:45,500 Ας κάνουμε ένα βήμα πίσω και να απλήρωτος τι συμβαίνει εδώ. 355 00:18:45,500 --> 00:18:47,280 Έτσι, αυτό είναι λίγο περίπλοκο, και βλέπουμε κάτι νέο 356 00:18:47,280 --> 00:18:48,071 για πρώτη φορά. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 Το "αυτό" λέξη-κλειδί είναι το νέο πράγμα βλέπουμε εδώ, και τι κάνει αυτό 359 00:18:55,065 --> 00:19:00,540 είναι, αναφέρεται στην τρέχουσα αντιρρήσεις στο πεδίο εφαρμογής, έτσι δεν είναι; 360 00:19:00,540 --> 00:19:03,990 Έτσι, όταν λέμε, αυτό επισημαίνει όλος ο τρόπος πίσω 361 00:19:03,990 --> 00:19:08,140 σε όλη αυτή object-- όταν το κάνουμε this.fn, 362 00:19:08,140 --> 00:19:11,990 θα πάμε για να πάει όλος ο τρόπος πίσω σε αυτό το αντικείμενο, μεταβείτε στην τιμή Fn 363 00:19:11,990 --> 00:19:16,471 και να πάρει Σαμ, τραβήξτε όλο το δρόμο πίσω, να κολλήσει εδώ, και στη συνέχεια να προχωρήσουμε. 364 00:19:16,471 --> 00:19:19,838 >> Κοινό: Έτσι, με την ανάκτηση, είναι ότι γίνεται εξαιτίας της παραμέτρου 365 00:19:19,838 --> 00:19:20,621 ορισμός? 366 00:19:20,621 --> 00:19:23,870 SAM ΠΡΑΣΙΝΟ: Άρα το ερώτημα ήταν, είναι ο ανάκτηση γίνεται εξαιτίας της παραμέτρου 367 00:19:23,870 --> 00:19:24,727 ορισμός? 368 00:19:24,727 --> 00:19:25,435 Ναι, απολύτως. 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 Τι πρόκειται να συμβεί εδώ είναι, Αυτή η τελεία λέει στον JavaScript, 371 00:19:32,470 --> 00:19:39,990 Εντάξει, παίρνω κάποια αξία από αυτό το αντικείμενο από τον εαυτό μου. 372 00:19:39,990 --> 00:19:46,375 Και τότε θα ψάξει για μια καταχώριση που ονομάζεται fn, και εφόσον διαπιστώσει, 373 00:19:46,375 --> 00:19:48,470 αυτό θα επιστρέψει ότι value-- έτσι, Σαμ. 374 00:19:48,470 --> 00:19:51,540 Αλλά θα μπορούσα επίσης να πληκτρολογήσει κάτι που δεν ορίστηκε εδώ, 375 00:19:51,540 --> 00:19:54,090 και, στη συνέχεια, θα ήταν απλά undefined-- επιστρέψει το οποίο 376 00:19:54,090 --> 00:19:58,250 Είναι ένα πράγμα που μπορεί JavaScript κάνετε, που μπορεί να έχει οφέλη, 377 00:19:58,250 --> 00:20:03,190 αλλά είναι also-- αν κάνετε ένα τυπογραφικό λάθος, μπορεί να οδηγήσει σε παράξενα σφάλματα. 378 00:20:03,190 --> 00:20:05,617 Γι 'αυτό ακριβώς θα προσπαθήσουμε να βρούμε Όπως και να το πείτε για να βρείτε 379 00:20:05,617 --> 00:20:07,700 και δεν πρόκειται να διαμαρτύρονται, αν δεν το βρείτε. 380 00:20:07,700 --> 00:20:11,390 Θα πω απλά, δεν το έκανα βρείτε, και στη συνέχεια να προχωρήσουμε. 381 00:20:11,390 --> 00:20:17,581 Έτσι θα ήταν να είναι απροσδιόριστη, συν κενό, καθώς το τελευταίο όνομα. 382 00:20:17,581 --> 00:20:18,080 Ναι. 383 00:20:18,080 --> 00:20:21,070 Και τότε μπορούμε να δούμε ότι αν θα μπορούσε στη συνέχεια να πάει κάτω και access-- 384 00:20:21,070 --> 00:20:25,450 και καλούμε tf.print () με παρενθέσεις. 385 00:20:25,450 --> 00:20:30,000 Είναι πρόκειται να αμφισβητήσει την εκτύπωση λειτουργία χωρίς επιχειρήματα, σωστά; 386 00:20:30,000 --> 00:20:34,490 Αλλά αν εμείς απλά είπε tf.print () ερωτηματικό, χωρίς τις παρενθέσεις, 387 00:20:34,490 --> 00:20:37,480 το μόνο που θα κάνει είναι να τραβήξει από τη λειτουργία από την τιμή, 388 00:20:37,480 --> 00:20:40,609 αλλά στην πραγματικότητα δεν την κάλεσε. 389 00:20:40,609 --> 00:20:41,162 Δροσερός. 390 00:20:41,162 --> 00:20:42,870 Χιου Zabriskie: Πρέπει κάνουμε ένα αντικείμενο; 391 00:20:42,870 --> 00:20:44,161 SAM ΠΡΑΣΙΝΟ: Σίγουρα, ας το κάνουμε αυτό. 392 00:20:44,161 --> 00:20:48,750 Γι 'αυτό και μπορεί να κινηθεί αυτή παράδειγμα στην κονσόλα. 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 Μπορούμε να φανταστούμε ότι έχω ένα αντικείμενο. 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 Έτσι, αυτό είναι ένα απλό αντικείμενο. 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 Αυτό είναι ένα αντικείμενο που περιέχει δύο αξιών με δύο πλήκτρα, δύο βασικά αξία 399 00:21:11,050 --> 00:21:12,710 ζεύγη. 400 00:21:12,710 --> 00:21:21,850 Έτσι, τότε μπορούν να έχουν πρόσβαση την αξία αποθηκευμένη στο εσωτερικό αυτού του αντικειμένου κάνοντας x.x1, 401 00:21:21,850 --> 00:21:23,400 για παράδειγμα, και να πάρω πίσω 1. 402 00:21:23,400 --> 00:21:29,590 Ομοίως, x.x2, να πάρει την τιμή αυτή πίσω. 403 00:21:29,590 --> 00:21:33,330 >> Και τώρα το πραγματικά δροσερό πράγμα είναι, μπορώ πραγματικά να προσθέσει κάτι σε αυτό το αντικείμενο 404 00:21:33,330 --> 00:21:34,316 αφού έχω δημιουργήσει. 405 00:21:34,316 --> 00:21:36,315 Έτσι μπορείτε να φανταστείτε, ας πω ότι έχω μια λειτουργία. 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> Χιου Zabriskie: Μπορείτε Πρέπει να κάνετε Shift-Enter. 408 00:21:46,352 --> 00:21:47,643 >> SAM ΠΡΑΣΙΝΟ: Ω, αυτό είναι ενοχλητικό. 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 Τι έκανε δεν αρέσει; 411 00:22:04,324 --> 00:22:04,824 Ω. 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 Ορίστε. 414 00:22:08,691 --> 00:22:09,190 Δροσερός. 415 00:22:09,190 --> 00:22:12,840 >> Έτσι έχω μόλις δημιουργήσατε αυτή η λειτουργία, του F, δηλαδή 416 00:22:12,840 --> 00:22:17,590 πρόκειται να πάει στην τρέχουσα αντικείμενο και this.x1 εκτύπωσης. 417 00:22:17,590 --> 00:22:20,330 Έτσι, αν μπορώ απλά να καλέσετε από f το ίδιο, τίποτα δεν πρόκειται 418 00:22:20,330 --> 00:22:26,970 να συμβεί, δεξιά, επειδή δεν υπάρχει x1 πεδίο στο αντικείμενο αυτό είναι αναφέρεστε. 419 00:22:26,970 --> 00:22:39,710 Αλλά, αν πω, x.f = f, και στη συνέχεια θα καλέστε x.f (), Πάω να πάρει πίσω 1. 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 Αυτό συνάρτηση f είναι τώρα που σχετίζονται με το αντικείμενο x, 422 00:22:46,530 --> 00:22:51,800 η οποία έχει ένα κλειδί που ονομάζεται x1 που συνδέονται με την τιμή 1, 423 00:22:51,800 --> 00:22:54,570 Έτσι, όταν λέμε this.x1, είναι θα βρείτε αυτό που ψάχνει 424 00:22:54,570 --> 00:22:56,450 και να είναι σε θέση να εκτυπώσετε μια αξία έξω. 425 00:22:56,450 --> 00:22:58,700 Έτσι, αυτό είναι μόνο ένα παράδειγμα του είδους των τρελά πράγματα 426 00:22:58,700 --> 00:23:01,190 μπορείτε να κάνετε με τα αντικείμενα σε JavaScript. 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> Έτσι ώστε η έκδοση ήταν γενική μορφή, με την έννοια 429 00:23:07,560 --> 00:23:13,780 ότι έχουμε δημιουργήσει ένα αντικείμενο με τη χρήση αυτή παρενθέσεις notation-- σημειογραφία τιράντες, 430 00:23:13,780 --> 00:23:16,880 rather-- και αυτό είναι βολικό αν θέλουμε απλώς 431 00:23:16,880 --> 00:23:21,440 ένα παράδειγμα από ένα συγκεκριμένο αντικείμενο, αλλά Τι θα συμβεί αν θέλουμε να έχουμε περισσότερα από ένα 432 00:23:21,440 --> 00:23:22,210 του ίδιου είδους; 433 00:23:22,210 --> 00:23:24,440 Και η απάντηση σε αυτό ερώτημα είναι, υπάρχουν πράγματα 434 00:23:24,440 --> 00:23:26,760 κάλεσε μαθήματα JavaScript, καθώς και. 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 Μπορούμε να δημιουργήσουμε μια συνάρτηση που κάνει κάποιο είδος της προετοιμασίας 437 00:23:36,420 --> 00:23:41,690 για ένα ξένο αντικείμενο, και θα ήθελα να πω, όπως, 438 00:23:41,690 --> 00:23:44,550 class-- μου έτσι το όνομα της επαναχρησιμοποιήσιμων object-- 439 00:23:44,550 --> 00:23:47,100 ισούται με τη λειτουργία που δημιουργεί. 440 00:23:47,100 --> 00:23:52,280 Έτσι αυτό θα ισοδυναμούσε να δημιουργεί ένα αντικείμενο που 441 00:23:52,280 --> 00:23:55,930 θα ήθελα απλώς, σγουρά στήριγμα, str, του παχέος εντέρου, 442 00:23:55,930 --> 00:23:59,630 αυτό είναι μια συμβολοσειρά, ερωτηματικό, σγουρά στήριγμα. 443 00:23:59,630 --> 00:24:01,880 Αυτό θα ήταν το γενικό αντικείμενο που προετοιμαστεί, 444 00:24:01,880 --> 00:24:06,380 με το ένα διαφορά σχετικά με την επόμενες γραμμές θα δημιουργήσει ένα πρωτότυπο, το οποίο 445 00:24:06,380 --> 00:24:11,190 σημαίνει ότι είναι ένα προεπιλεγμένο κλειδί που προσθέτουμε στο αντικείμενο μας, ότι 446 00:24:11,190 --> 00:24:13,970 έχει την αξία που αναφέρονται εδώ. 447 00:24:13,970 --> 00:24:20,570 Αυτό σημαίνει ότι, όταν δημιουργώ ένα νέο παράδειγμα αυτού του αντικειμένου MyClass, 448 00:24:20,570 --> 00:24:27,440 πρόκειται να έχουν προ-χτισμένο μέσα είναι μια τιμή που ονομάζεται οδός και άλλη τιμή 449 00:24:27,440 --> 00:24:32,418 ονομάζεται myPrint, η οποία είναι πρόκειται να είναι μια λειτουργία. 450 00:24:32,418 --> 00:24:32,918 Φοβερός. 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> Εξαιρετική. 453 00:24:37,990 --> 00:24:40,710 Έτσι, το τελευταίο πράγμα που πρέπει να πει για JavaScript 454 00:24:40,710 --> 00:24:46,430 είναι ότι είναι πραγματικά χρήσιμο για το τι καλούνται ασύγχρονες λειτουργίες. 455 00:24:46,430 --> 00:24:52,500 Ασύγχρονη σημαίνει πως μπορεί να περιμένει για κάποια λειτουργία 456 00:24:52,500 --> 00:24:57,870 για να ολοκληρωθεί πριν προχωρήσουμε , αλλά να προχωρήσουμε ενώ περιμένουμε 457 00:24:57,870 --> 00:24:59,690 και στη συνέχεια να έχουν κάτι να συμβεί αργότερα. 458 00:24:59,690 --> 00:25:03,480 Και τι εννοώ με αυτό είναι, μπορούμε να φανταστούμε μια κατάσταση όπου 459 00:25:03,480 --> 00:25:06,850 μπορείτε να στείλετε ένα αίτημα μερικά web server κάπου, 460 00:25:06,850 --> 00:25:09,670 και πρόκειται να σας στείλουν πίσω μερικά μεγάλο κομμάτι των δεδομένων, έτσι δεν είναι; 461 00:25:09,670 --> 00:25:13,320 Και χρήστη μπορούσαμε να περιμένουμε στο Εν τω μεταξύ για να συμβεί αυτό, 462 00:25:13,320 --> 00:25:15,200 και τίποτα δεν θα μπορούσε να είναι συμβαίνει εκείνη τη στιγμή. 463 00:25:15,200 --> 00:25:18,110 Αλλά αυτό δεν είναι ένα μεγάλο σχέδιο, σωστά; 464 00:25:18,110 --> 00:25:20,214 Δεν θέλετε η ιστοσελίδα να παγώσει. 465 00:25:20,214 --> 00:25:22,380 Τι θα συμβεί αν ο χρήστης θέλει να κάντε κλικ σε ένα drop-down μενού; 466 00:25:22,380 --> 00:25:24,870 Δεν είναι ένα μεγάλο πρότυπο σχεδιασμού. 467 00:25:24,870 --> 00:25:29,290 Αντ 'αυτού, αυτό που βασικά Το JavaScript δεν είναι, λέει, 468 00:25:29,290 --> 00:25:31,870 Εντάξει, κάνουμε αυτή τη λειτουργία ασύγχρονα. 469 00:25:31,870 --> 00:25:36,520 Έτσι, όπως, περιμένει στο παρασκήνιο, και στη συνέχεια, όταν η λειτουργία γίνεται, 470 00:25:36,520 --> 00:25:39,420 καλέστε το επανάκλησης function-- καλέσει κάποια λειτουργία, 471 00:25:39,420 --> 00:25:43,800 χρειάζεται κάποια action-- για να επισημάνει ότι η λειτουργία περιμέναμε να τελειώσει 472 00:25:43,800 --> 00:25:45,520 ΤΕΛΕΙΩΣΕ. 473 00:25:45,520 --> 00:25:51,240 Και ο λόγος που είναι εξαιρετικά ισχυρό είναι, μπορούμε να κάνουμε κάτι, να περάσει ένα επιχείρημα, 474 00:25:51,240 --> 00:25:54,440 κάνει κάτι, και στη συνέχεια, περιμένετε για να συμβεί κάτι. 475 00:25:54,440 --> 00:25:58,970 Στη συνέχεια, αφού αυτό το κάτι ολοκληρώνει, μπορούμε να καλέσετε έναν επανάκλησης. 476 00:25:58,970 --> 00:26:03,300 Αυτό είναι πραγματικά χρήσιμο επειδή επιτρέπει μας να κάνουμε τα πράγματα με το Web Audio API, 477 00:26:03,300 --> 00:26:07,490 για παράδειγμα, σαν ένας φορτίο ήχου αρχείο από έναν απομακρυσμένο διακομιστή 478 00:26:07,490 --> 00:26:11,660 χωρίς να χρειάζεται να περιμένετε για το ολόκληρο το αρχείο ήχου που θα φορτωθεί, 479 00:26:11,660 --> 00:26:14,440 η οποία θα είναι πραγματικά κακό για την εμπειρία του χρήστη. 480 00:26:14,440 --> 00:26:17,080 Δροσερός. 481 00:26:17,080 --> 00:26:19,460 >> Τελευταία ζευγάρι σημειώνει σχετικά εντοπισμού σφαλμάτων, δεδομένου ότι αυτό 482 00:26:19,460 --> 00:26:23,682 Είναι ένα πράγμα που πρόκειται να πρέπει να κάνετε ως μέρος του σχεδίου σας, εγγυημένα. 483 00:26:23,682 --> 00:26:25,140 Ανέφερα την κονσόλα JavaScript. 484 00:26:25,140 --> 00:26:27,550 Είναι ένα σούπερ χρήσιμο χαρακτηριστικό όλων των σύγχρονων browsers, 485 00:26:27,550 --> 00:26:30,300 Και είμαστε πραγματικά να σας ενθαρρύνω να πάρετε άνετα χρησιμοποιώντας την κονσόλα σας, 486 00:26:30,300 --> 00:26:33,660 αν θέλετε να πάρετε καλοί σε JavaScript. 487 00:26:33,660 --> 00:26:36,320 Είναι εξαιρετικά βολικό για εντοπισμό σφαλμάτων, αλλά είναι επίσης 488 00:26:36,320 --> 00:26:39,440 πραγματικά χρήσιμο για την εξεύρεση πώς να χρησιμοποιούν ένα API. 489 00:26:39,440 --> 00:26:41,950 Παρέχει τη δυνατότητα για πραγματικά εύκολο πειραματισμό 490 00:26:41,950 --> 00:26:45,910 χωρίς να χρειάζεται να πληκτρολογήσετε κάποια κώδικα, και στη συνέχεια να το υπολογίσουν. 491 00:26:45,910 --> 00:26:47,500 Δεν χρειάζεται να κάνετε όλα αυτά τα βήματα. 492 00:26:47,500 --> 00:26:49,619 Μπορείτε να γράψετε μόνο ένα τμήμα κώδικα σε μια γραμμή, 493 00:26:49,619 --> 00:26:52,410 και στη συνέχεια να πάρει για την άμεση ανατροφοδότηση αν η γραμμή κώδικα ή όχι 494 00:26:52,410 --> 00:26:55,230 worked-- πολύ βολικό. 495 00:26:55,230 --> 00:26:59,760 >> Και, επίσης, μία μόνο τεχνική note-- η κονσόλα JavaScript είναι ένα παράδειγμα 496 00:26:59,760 --> 00:27:05,680 ενός REPL-- έτσι ώστε να είναι Ε-Ε-Ρ-Ε, REPL, το οποίο σημαίνει ανάγνωση, την αξιολόγηση, 497 00:27:05,680 --> 00:27:06,180 βρόχο εκτύπωσης. 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 Θα πάμε για να πληκτρολογήσετε κάποια πράγματα σε, αυτό θα διαβάσει αυτά που γράψατε στο, 500 00:27:12,120 --> 00:27:17,280 αυτό θα το αξιολογήσουν, και αυτό θα εκτυπωθεί η εξόδου, και στη συνέχεια θα ξεκινήσει και πάλι. 501 00:27:17,280 --> 00:27:22,056 Αυτό σας επιτρέπει να μεταβείτε γρήγορα σε κύκλους επανάληψη, το οποίο είναι πραγματικά δροσερό. 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> Υποθέτω πραγματικό τελευταίο αυτό note-- είναι η πραγματική τελευταία νότα, ναι. 504 00:27:28,930 --> 00:27:30,780 Πώς μπορούμε πραγματικά να χρησιμοποιήσετε τη JavaScript; 505 00:27:30,780 --> 00:27:34,040 Έτσι, πρώτα, μπορούμε να εισάγουμε χρησιμοποιώντας μια ετικέτα script 506 00:27:34,040 --> 00:27:39,500 στην κορυφή ή στο κάτω μέρος του HTML file-- οπουδήποτε μέσα από ένα αρχείο HTML, 507 00:27:39,500 --> 00:27:40,440 πραγματικά. 508 00:27:40,440 --> 00:27:47,390 Και μέσα σε ένα tag σενάριο, υπάρχουν δύο υπο-τρόποι εισαγωγής JavaScript. 509 00:27:47,390 --> 00:27:51,370 Ο πρώτος είναι με έχει ένα ξεχωριστό αρχείο JavaScript 510 00:27:51,370 --> 00:27:58,010 ότι εισάγουμε στο σύνολό του, ή από την κατοχή μιας περιοχής του κώδικα, όπως το script 511 00:27:58,010 --> 00:28:00,290 για να ξεκινήσει, και στη συνέχεια ανάστροφη κάθετο σενάριο μέχρι το τέλος. 512 00:28:00,290 --> 00:28:02,620 Και τότε γράφουμε μόνο JavaScript μέσα στο αρχείο HTML. 513 00:28:02,620 --> 00:28:03,790 Αυτοί είναι οι δύο τρόπους. 514 00:28:03,790 --> 00:28:05,165 Δεν μπορείτε να το έχετε στο εσωτερικό της HTML. 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 Κοινό: Είναι το ένα καλύτερο από το άλλο; 517 00:28:08,126 --> 00:28:10,542 SAM ΠΡΑΣΙΝΟ: Το ερώτημα ήταν, είναι ένα καλύτερο από το άλλο. 518 00:28:10,542 --> 00:28:18,306 Έτσι, ναι, ως πρακτική στυλ κωδικοποίησης, και, επίσης, είναι σαν μια πρακτική σχεδιασμού. 519 00:28:18,306 --> 00:28:20,180 Υπάρχουν δύο λόγοι Γι 'αυτό θα μπορούσε να είναι καλύτερη. 520 00:28:20,180 --> 00:28:23,934 Το πρώτο είναι, ότι κάνει κωδικό σας ένα διαβάζονται πιο εύκολα αν όλες HTML σας 521 00:28:23,934 --> 00:28:27,100 είναι σε ένα μέρος, το σύνολο των CSS σας είναι σε άλλο τόπο, όλα JavaScript σας 522 00:28:27,100 --> 00:28:28,420 βρίσκεται σε τρίτη θέση. 523 00:28:28,420 --> 00:28:28,920 Δικαίωμα? 524 00:28:28,920 --> 00:28:32,370 Νομίζω ότι θα έπρεπε να έχουμε ήδη μιλήσει γι 'αυτό σε sections-- όπως CSS-- τι 525 00:28:32,370 --> 00:28:35,220 ότι is-- και πηγαίνει συχνά σε ένα άλλο αρχείο. 526 00:28:35,220 --> 00:28:37,090 Έτσι, παρόμοιο είδος της έννοιας εδώ. 527 00:28:37,090 --> 00:28:42,410 Μπορείτε επίσης να φανταστείτε ότι το JavaScript θα επαναχρησιμοποιηθεί σε περισσότερες από μία 528 00:28:42,410 --> 00:28:47,350 Σελίδα HTML, ή ίσως μια πολλές σελίδες HTML, 529 00:28:47,350 --> 00:28:49,340 και έχοντας ότι το JavaScript ανανεωμένος σε ένα 530 00:28:49,340 --> 00:28:51,950 αρχείο που μπορείτε να εισαγάγετε σε περισσότερες από μία θέση 531 00:28:51,950 --> 00:28:54,570 επιτρέπει ο κώδικας να είναι τρόπο πιο διατηρήσιμη. 532 00:28:54,570 --> 00:28:57,930 Μπορείτε να φανταστείτε την παραγωγή ενός αλλάξετε το JavaScript 533 00:28:57,930 --> 00:29:00,070 και χρειάζεται να το αλλάξετε σε 100 διαφορετικά αρχεία. 534 00:29:00,070 --> 00:29:04,070 Και αντί να μπορούμε να την αλλάξουμε μόνο σε ένα, το οποίο είναι πολύ πιο ισχυρό. 535 00:29:04,070 --> 00:29:05,420 Μήπως μπορώ να απαντήσω στην ερώτησή σας; 536 00:29:05,420 --> 00:29:07,950 Δροσερός. 537 00:29:07,950 --> 00:29:10,830 >> Μπορούμε επίσης να πληκτρολογήσετε στην κονσόλα, όπως έχουμε αναφέρει στο παρελθόν. 538 00:29:10,830 --> 00:29:15,070 Και πάλι, μια τελευταία note-- Web Audio είναι χτισμένο σε, 539 00:29:15,070 --> 00:29:16,978 δεν χρειάζεται να φορτώσει τίποτα. 540 00:29:16,978 --> 00:29:17,478 Δροσερός. 541 00:29:17,478 --> 00:29:20,519 Υπάρχουν ερωτήσεις, έχετε πια ερωτήσεις σχετικά JavaScript, 542 00:29:20,519 --> 00:29:21,930 πριν προχωρήσουμε; 543 00:29:21,930 --> 00:29:24,286 >> Κοινό: [δεν ακούγεται] 544 00:29:24,286 --> 00:29:25,410 SAM ΠΡΑΣΙΝΟ: Εντάξει, δροσερό. 545 00:29:25,410 --> 00:29:27,200 Έτσι τώρα που πρόκειται να μιλήσουμε για το API. 546 00:29:27,200 --> 00:29:28,490 >> Χιου Zabriskie: Cool. 547 00:29:28,490 --> 00:29:28,990 Ευχαριστώ, Σαμ. 548 00:29:28,990 --> 00:29:30,184 >> SAM ΠΡΑΣΙΝΟ: Σίγουρα. 549 00:29:30,184 --> 00:29:32,600 Χιου Zabriskie: Awesome, έτσι θα περάσουμε από το JavaScript. 550 00:29:32,600 --> 00:29:35,350 Έτσι, έχουμε μιλήσει για μερικά από τα τα βασικά στοιχεία της JavaScript, 551 00:29:35,350 --> 00:29:41,105 και αυτές είναι οι μεταβλητές, συναρτήσεις, αντικείμενα, λειτουργεί ως μεταβλητές, 552 00:29:41,105 --> 00:29:41,980 ασύγχρονη φόρτωση. 553 00:29:41,980 --> 00:29:46,100 Αυτά είναι όλα τα πράγματα που θα δείτε καθώς χρησιμοποιείτε το Web Audio. 554 00:29:46,100 --> 00:29:49,230 Έτσι, είμαστε ακριβώς πρόκειται να μιλήσω για πρώτη φορά σε ένα υψηλό επίπεδο. 555 00:29:49,230 --> 00:29:52,120 >> Είναι ένα API, γι 'αυτό είναι κάτι ότι είναι χτισμένο, όπως δήλωσε ο Σαμ, 556 00:29:52,120 --> 00:29:57,010 δεξιά στο JavaScript ότι μπορείτε να χρησιμοποιήσετε στην κονσόλα. 557 00:29:57,010 --> 00:30:01,020 Και είναι πραγματικά ακριβώς όπως η C ++ κώδικα Αυτό είναι πραγματικά ενσωματωμένο στο Chrome 558 00:30:01,020 --> 00:30:04,470 και Firefox, και όλα αυτά τα προγράμματα περιήγησης. 559 00:30:04,470 --> 00:30:07,060 Έτσι, η βασική ιδέα με το Web Ήχου είναι ότι έχετε 560 00:30:07,060 --> 00:30:09,440 Αυτό το είδος του αγωγού του ήχου, έτσι δεν είναι; 561 00:30:09,440 --> 00:30:13,670 Έτσι, τα δεδομένα ήχου σας έρχεται σε σε κάποια μορφή. 562 00:30:13,670 --> 00:30:16,690 >> Υπάρχουν είδους τρεις κύριες forms-- έχετε τον ταλαντωτή, η οποία 563 00:30:16,690 --> 00:30:21,340 δημιουργεί ένα ημιτονοειδές κύμα, συνημίτονο κύμα, θα πάμε να δούμε πώς αυτό λειτουργεί. 564 00:30:21,340 --> 00:30:23,890 Ένα άλλο πολύ διαδεδομένο, φυσικά, είναι ένα MP3. 565 00:30:23,890 --> 00:30:25,810 Έτσι ίσως να ξεκινήσετε με ένα τραγούδι, και στη συνέχεια θα 566 00:30:25,810 --> 00:30:28,320 θελήσετε να κάνετε κάποια φιλτραρίσματος σε αυτό και εξόδου 567 00:30:28,320 --> 00:30:30,605 that-- ότι θα μπορούσε να είναι μια πιθανή πηγή. 568 00:30:30,605 --> 00:30:32,480 Και τότε ένα πραγματικά δροσερό το ένα είναι το μικρόφωνο. 569 00:30:32,480 --> 00:30:37,230 Έτσι, μπορείτε να χρησιμοποιήσετε κάποιο πολύ βασικές κλήσεις JavaScript 570 00:30:37,230 --> 00:30:39,440 για να αποκτήσετε πρόσβαση στο μικρόφωνο, και έτσι αν 571 00:30:39,440 --> 00:30:42,870 ήθελε να κάνει μια εφαρμογή όπως έναν ανιχνευτή αγωνιστικό χώρο, 572 00:30:42,870 --> 00:30:45,290 για παράδειγμα, ότι παίρνει σε φωνή και τα στοιχεία από σας 573 00:30:45,290 --> 00:30:47,740 η pitch-- πολύ εύκολος τρόπος για αυτό. 574 00:30:47,740 --> 00:30:50,730 Μπορείτε να ακριβώς το είδος του να το διαβάσει σε, να καταλάβω τη συχνότητα, 575 00:30:50,730 --> 00:30:52,250 και τότε η έξοδος ένας αριθμός. 576 00:30:52,250 --> 00:30:56,080 Έτσι θα δούμε πώς αυτό λειτουργεί, όπως καλά. 577 00:30:56,080 --> 00:30:59,430 >> Ο προορισμός είναι βασικά όπου τα δεδομένα ήχου εξόδου. 578 00:30:59,430 --> 00:31:02,890 Έτσι γενικά, αυτό είναι σαν να ηχεία του φορητού σας υπολογιστή. 579 00:31:02,890 --> 00:31:05,610 Άλλες επιλογές είναι σαν α ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 θα φτάσουμε σε κόμβους ενός second-- αλλά βασικά, 581 00:31:07,990 --> 00:31:11,939 είτε βάζετε ήχο έξω μέσω του υπολογιστή σας μέσω των ηχείων, 582 00:31:11,939 --> 00:31:14,730 ή είστε το είδος του σημειώνοντας, έτσι είστε το αποθηκεύει τα δεδομένα ήχου. 583 00:31:14,730 --> 00:31:18,980 Έτσι, ίσως αν κάποιος δημιουργεί μουσική στην εφαρμογή σας και, στη συνέχεια, 584 00:31:18,980 --> 00:31:22,410 θέλετε να καταγράψετε αυτό και ίσως, όπως να εξάγει σε SoundCloud, για example-- 585 00:31:22,410 --> 00:31:25,281 ότι θα ήταν ένας τρόπος να το κάνουμε αυτό. 586 00:31:25,281 --> 00:31:27,030 Όλα τα πράγματα διασκέδαση, το οποίο θα μιλήσουμε για, 587 00:31:27,030 --> 00:31:29,950 συμβαίνει μεταξύ αυτών των δύο σημείων, όπου θα φορτώσει στη μουσική 588 00:31:29,950 --> 00:31:31,410 και τότε η έξοδος του. 589 00:31:31,410 --> 00:31:36,660 >> Έτσι, Πάω να μιλήσω για το πέντε στάδια της παραγωγής ήχου σε ένα δευτερόλεπτο. 590 00:31:36,660 --> 00:31:38,950 Έχουμε αυτό το πράγμα που ονομάζεται μια AudioContext, η οποία 591 00:31:38,950 --> 00:31:41,580 Είναι αυτό το μικρό περιτύλιγμα που βλέπουμε εδώ. 592 00:31:41,580 --> 00:31:49,980 Βασικά αυτό AudioContext is-- αν μεταβείτε στην κονσόλα JavaScript τώρα, 593 00:31:49,980 --> 00:31:52,740 μπορούμε να δημιουργήσουμε ένα τώρα. 594 00:31:52,740 --> 00:31:54,040 Ακριβώς ένα παράδειγμα της REPL, σωστά; 595 00:31:54,040 --> 00:31:57,880 Είμαστε ανάγνωση, την αξιολόγηση, και εκτυπώνει. 596 00:31:57,880 --> 00:32:00,260 >> AudioContext είναι ένα παγκόσμιο κράτος. 597 00:32:00,260 --> 00:32:05,500 Είναι ένα struct, είναι ένα αντικείμενο εδώ, και κρατά τις πληροφορίες 598 00:32:05,500 --> 00:32:09,960 για πράγματα που είναι σε εξέλιξη στην οθόνη σχετικά με τον ήχο. 599 00:32:09,960 --> 00:32:15,220 Ένα παράδειγμα είναι η τρέχουσα ώρα. 600 00:32:15,220 --> 00:32:18,910 Αυτό σας ενημερώνει για τον αριθμό δευτερόλεπτα, με μεγάλη ακρίβεια, 601 00:32:18,910 --> 00:32:20,890 δεδομένου ότι η ιστοσελίδα φορτώνεται. 602 00:32:20,890 --> 00:32:24,110 Έτσι, αυτό είναι ένα πραγματικά χρήσιμο μικρή ιδιοκτησία που μπορείτε να χρησιμοποιήσετε. 603 00:32:24,110 --> 00:32:27,898 Είναι διαβάσετε only-- Νομίζω ότι πραγματικά μπορείτε να προσπαθήσετε να το ρυθμίσετε μια τιμή. 604 00:32:27,898 --> 00:32:29,856 Θα σας πω το ρυθμίσετε, και, στη συνέχεια, αν το εκτυπώσετε 605 00:32:29,856 --> 00:32:31,439 again-- δεν το έκανε πραγματικά πολύ δουλειά. 606 00:32:31,439 --> 00:32:34,472 Έτσι υπάρχουν μόνο για ανάγνωση ιδιότητες σε JavaScript. 607 00:32:34,472 --> 00:32:36,430 Αυτό είναι πραγματικά χρήσιμο εάν είστε το είδος του το συγχρονισμό 608 00:32:36,430 --> 00:32:38,610 πολλά διαφορετικά πληροφορίες, όταν είστε 609 00:32:38,610 --> 00:32:41,280 το είδος που παίζουν διαφορετικούς ήχους. 610 00:32:41,280 --> 00:32:43,630 >> Μια άλλη πολύ χρήσιμη είναι ο προορισμός πλαίσιο. 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 Σίγουρα, αν σας ενδιαφέρει, να προσπαθώντας αυτό με δική σας κονσόλα της δεξιάς 613 00:32:49,670 --> 00:32:50,980 τώρα. 614 00:32:50,980 --> 00:32:53,150 Έτσι, αυτό είναι ένα AudioDestinationNode. 615 00:32:53,150 --> 00:32:56,480 Βασικά αυτό που λέει ότι αυτό είναι, όπου η έξοδος πηγαίνει; 616 00:32:56,480 --> 00:32:59,590 Έτσι, υπάρχουν δύο πραγματικές επιλογές εδώ. 617 00:32:59,590 --> 00:33:01,940 Συνήθως η προεπιλεγμένη Είναι απλά τα ηχεία σας, 618 00:33:01,940 --> 00:33:05,150 έτσι AudioDestinationNode λέει βασικά μόνο 619 00:33:05,150 --> 00:33:09,240 υπάρχουν μηδέν εξόδους με τον ήχο έρχονται, στα ηχεία. 620 00:33:09,240 --> 00:33:12,050 Έτσι, σε γενικές γραμμές, δεν το κάνετε πρέπει να παίξουν με αυτό. 621 00:33:12,050 --> 00:33:15,720 Αν σας ενδιαφέρει στην πραγματικότητα, χρησιμοποιώντας η ScriptProcessorNode για εγγραφή, 622 00:33:15,720 --> 00:33:16,990 σίγουρα πυροβολούν μου ένα e-mail αργότερα γιατί αυτό είναι 623 00:33:16,990 --> 00:33:18,330 λίγο πιο περίπλοκη. 624 00:33:18,330 --> 00:33:21,590 Αλλά σε γενικές γραμμές, είστε ακριβώς το είδος από την έξοδο ήχου σε κάποια μορφή. 625 00:33:21,590 --> 00:33:24,347 Έτσι δροσερό, θα πηδήσει πίσω εδώ. 626 00:33:24,347 --> 00:33:25,180 Κοινό: Λυπάμαι. 627 00:33:25,180 --> 00:33:26,054 Χιου Zabriskie: Ναι. 628 00:33:26,054 --> 00:33:28,770 Κοινό: Ξέρω ότι είπατε να μιλήσετε για να σας αργότερα για την εγγραφή. 629 00:33:28,770 --> 00:33:31,550 Μπορείτε να διασυνδέσει ότι με τα Pro Tools; 630 00:33:31,550 --> 00:33:33,120 >> Χιου Zabriskie: Με το Pro Tools; 631 00:33:33,120 --> 00:33:35,260 Ας δούμε. 632 00:33:35,260 --> 00:33:37,220 Δε νομίζω. 633 00:33:37,220 --> 00:33:41,670 Έτσι, πηγαίνει μεταξύ του πελάτη, το οποίο είναι το JavaScript 634 00:33:41,670 --> 00:33:44,310 κονσόλα, και τις πραγματικές σας υπολογιστών, είναι γενικά 635 00:33:44,310 --> 00:33:46,490 κάτι που είναι είδος από εκτός ορίων, εάν 636 00:33:46,490 --> 00:33:52,320 θα, είδος από τη φύση του the-- είναι το είδος του πράγματος σχεδιασμού, 637 00:33:52,320 --> 00:33:57,770 αλλά θα προσπαθήσει να κρατήσει το πρόγραμμα περιήγησης ξεχωριστά από την πραγματική του υπολογιστή του χρήστη. 638 00:33:57,770 --> 00:34:02,310 Σε γενικές γραμμές, το μόνο πράγμα που θα είστε σε θέση να Πρόσβαση είναι το μικρόφωνο ή την κάμερα. 639 00:34:02,310 --> 00:34:04,730 Δεν είστε σε θέση να, εγώ Δεν νομίζω, χρησιμοποιήστε το Pro Tools. 640 00:34:04,730 --> 00:34:07,480 Ωστόσο, αν έχετε δημιουργήσει ένα κομμάτι σε Pro Tools, 641 00:34:07,480 --> 00:34:12,710 εξάγονται από αυτό, θα μπορούσε να φορτώσετε το εδώ, αυτό το φίλτρο, για παράδειγμα, 642 00:34:12,710 --> 00:34:16,820 διαδικασία η οποία, και καταγράφει ότι σε μια Ήχος Destination-- ή, no-- μια σφαίρα 643 00:34:16,820 --> 00:34:17,870 Επεξεργαστής κόμβου. 644 00:34:17,870 --> 00:34:20,730 Και στη συνέχεια, από εκεί, θα μπορούσατε Εξάγουμε ότι για να SoundCloud, σας 645 00:34:20,730 --> 00:34:25,320 θα μπορούσε να το στείλετε σε ένα μήνυμα ηλεκτρονικού ταχυδρομείου, ή Ό, τι σας αρέσει από εκεί. 646 00:34:25,320 --> 00:34:31,159 >> Αλλά υπάρχει το είδος του μια μικρή φράγματος μεταξύ τη μουσική στον υπολογιστή σας 647 00:34:31,159 --> 00:34:33,050 και τη μουσική σε απευθείας σύνδεση. 648 00:34:33,050 --> 00:34:37,940 >> SAM ΠΡΑΣΙΝΟ: Και αυτό είναι δεν είναι μοναδική σε αυτό το API. 649 00:34:37,940 --> 00:34:44,060 Είναι ένα χαρακτηριστικό ασφαλείας του Chrome, και Νομίζω ότι κάθε άλλο σύγχρονο πρόγραμμα περιήγησης. 650 00:34:44,060 --> 00:34:45,860 Το πρόγραμμα περιήγησης είναι αυτοδύναμη. 651 00:34:45,860 --> 00:34:50,980 Έτσι, για παράδειγμα, μια ιστοσελίδα δεν μπορεί να χρησιμοποιήσετε την Javascript για να απενεργοποιήσετε τον ήχο 652 00:34:50,980 --> 00:34:54,190 για τα ηχεία σας, για παράδειγμα. 653 00:34:54,190 --> 00:34:58,120 Ή δεν μπορεί να απενεργοποιήσετε τον υπολογιστή σας. 654 00:34:58,120 --> 00:35:01,530 Και δεν υπάρχει κανένα ενδιάμεσο σημείο μεταξύ αυτών των δύο πράγματα, δεξιά, 655 00:35:01,530 --> 00:35:05,960 οπότε είτε έχετε ένα πλήρης αφαίρεση, 656 00:35:05,960 --> 00:35:10,050 ή θα ανοίξει το ελάττωμα ασφαλείας να αφήσει 657 00:35:10,050 --> 00:35:14,440 ένας προγραμματιστής με κακές προθέσεις κάνουμε ό, τι θέλουν με το laptop σας. 658 00:35:14,440 --> 00:35:18,104 Και γι 'αυτό Chrome είναι αυτοδύναμη. 659 00:35:18,104 --> 00:35:19,310 >> Χιου Zabriskie: Ναι. 660 00:35:19,310 --> 00:35:20,840 Βγάζει νόημα αυτό? 661 00:35:20,840 --> 00:35:21,369 Cool, δροσερό. 662 00:35:21,369 --> 00:35:23,160 Ήμουν ακριβώς πρόκειται να δείχνουν ένα παράδειγμα ενός. 663 00:35:23,160 --> 00:35:25,118 Αυτό είναι λίγο πολύ όπως όσο μπορείτε να πάρετε, όσον αφορά 664 00:35:25,118 --> 00:35:26,950 από την πρόσβαση στον υπολογιστή του χρήστη. 665 00:35:26,950 --> 00:35:30,180 Εάν έχετε ένα πληκτρολόγιο USB στην πρίζα, μπορείτε να χρησιμοποιήσετε κάτι που ονομάζεται Web 666 00:35:30,180 --> 00:35:32,180 MIDI API, το οποίο δεν θα Πραγματικά μιλάμε για εδώ, 667 00:35:32,180 --> 00:35:36,330 αλλά αυτό είναι μια άλλη API που είναι ενσωματωμένη σε τουλάχιστον Chrome-- πάλι, 668 00:35:36,330 --> 00:35:41,570 Γι 'αυτό αγαπάμε Chrome-- Νομίζω Firefox ή Safari, 669 00:35:41,570 --> 00:35:44,300 αυτό είναι ένα εύκολο πράγμα να google-- διαφορετικά προγράμματα περιήγησης έχουν 670 00:35:44,300 --> 00:35:46,917 διαφορετική στήριξη για τις οποίες APIs που έχουν υλοποιηθεί. 671 00:35:46,917 --> 00:35:49,875 Αλλά αν θέλετε να συνδέσετε ένα πληκτρολόγιο και να συνεργαστεί με αυτές τις πληροφορίες, 672 00:35:49,875 --> 00:35:52,850 είδος στείλετε το πληκτρολόγιο πληροφορίες πάνω στον υπολογιστή 673 00:35:52,850 --> 00:35:57,620 και στη συνέχεια να χρησιμοποιήσετε αυτή την online, αυτό το API είναι όπου θέλετε να λειτουργεί αυτό. 674 00:35:57,620 --> 00:35:58,150 >> Δροσερός. 675 00:35:58,150 --> 00:35:58,710 ΕΝΤΆΞΕΙ. 676 00:35:58,710 --> 00:36:01,320 Έτσι, γρήγορα κινείται εδώ. 677 00:36:01,320 --> 00:36:03,310 Πώς τα πάμε στην ώρα τους; 678 00:36:03,310 --> 00:36:04,210 >> ΟΜΙΛΗΤΗΣ 1: Περίπου 15. 679 00:36:04,210 --> 00:36:05,543 >> Χιου Zabriskie: 15 λεπτά αριστερά; 680 00:36:05,543 --> 00:36:06,160 Εντάξει, δροσερό. 681 00:36:06,160 --> 00:36:08,170 Έτσι θα αγωνιστεί μπροστά εδώ. 682 00:36:08,170 --> 00:36:13,500 >> Έτσι, βασικά, το κύριο σημείο σκέφτομαι αυτό ως αγωγός 683 00:36:13,500 --> 00:36:16,430 είναι ότι κάθε βήμα στον αγωγό είναι μια σειρά κόμβων ήχου. 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 Η πηγή μας, ας πούμε, είναι ένας ταλαντωτής. 686 00:36:20,950 --> 00:36:23,380 Πρέπει να δημιουργήσουμε ένα κόμβο ταλαντωτή. 687 00:36:23,380 --> 00:36:25,690 Και αυτό είναι ακριβώς το είδος του μικρού function-- 688 00:36:25,690 --> 00:36:30,460 και είναι όλα με βάση έξω του ήχου πλαίσιο εδώ. 689 00:36:30,460 --> 00:36:32,885 >> Κοινό: Όταν το είπε ταλαντωτή, αυτό σημαίνει ότι 690 00:36:32,885 --> 00:36:37,250 στην πραγματικότητα είναι κυριολεκτικά πηγαίνει από δύο διαφορετικές πόλους και πίσω; 691 00:36:37,250 --> 00:36:41,170 >> Χιου Zabriskie: Όχι, είναι σαν να μια ψηφιακή αναπαράσταση. 692 00:36:41,170 --> 00:36:42,740 Είναι πράγματι υλοποιηθεί σε C ++. 693 00:36:42,740 --> 00:36:46,460 Εγώ πραγματικά δεν ξέρω τα specs από το πώς είναι πραγματικά σε εφαρμογή, 694 00:36:46,460 --> 00:36:48,500 αλλά όλο αυτό λειτουργεί ως δυαδικά δεδομένα. 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 Στην πραγματικότητα, ναι. 697 00:36:52,370 --> 00:36:53,950 Αυτό θα έλεγε, θα μπορούσα στην πραγματικότητα, αν σας ενδιαφέρει, 698 00:36:53,950 --> 00:36:56,533 Θα μπορούσα να σας στείλουμε λίγο περισσότερο πληροφορίες σχετικά με το πώς οι κυματομορφές 699 00:36:56,533 --> 00:37:00,181 φυλάσσονται έχουν μια ψηφιακή μορφή. 700 00:37:00,181 --> 00:37:00,680 Εντάξει, δροσερό. 701 00:37:00,680 --> 00:37:03,120 >> Έτσι είμαστε παράγει έναν ήχο σαν ένα ημιτονοειδές κύμα ή κάτι τέτοιο, ίσως 702 00:37:03,120 --> 00:37:04,190 440 Hertz. 703 00:37:04,190 --> 00:37:05,830 Έχουμε δημιουργήσει ένα ταλαντωτή. 704 00:37:05,830 --> 00:37:09,180 Αν θέλουμε να ρυθμίσετε την ένταση του ήχου, που συνδέετε τίποτε σε GainNode, 705 00:37:09,180 --> 00:37:12,500 η οποία θα μπορούσε να κάνει με .creategain. 706 00:37:12,500 --> 00:37:14,250 Αυτό ρυθμίζει την ένταση του ήχου. 707 00:37:14,250 --> 00:37:17,820 Μπορείτε να περάσετε σε οποιαδήποτε ότι του άλλου options-- καλά, 708 00:37:17,820 --> 00:37:20,300 έτσι μια πηγή ήχου ρυθμιστικό κόμβος είναι όπου ίσως 709 00:37:20,300 --> 00:37:23,660 αποθηκεύσετε ένα MP3 που έχετε φορτωθεί στην. 710 00:37:23,660 --> 00:37:27,670 >> Biquad φίλτρο για το φιλτράρισμα, εάν θέλετε να πάρετε όλες της βάσης έξω 711 00:37:27,670 --> 00:37:29,630 ενός τραγουδιού, ή κάτι τέτοιο. 712 00:37:29,630 --> 00:37:32,450 Θεός φυλάξοι θέλετε να πάρετε η βάση έξω από ένα τραγούδι. 713 00:37:32,450 --> 00:37:36,980 Και AudioDestination κόμβος είναι, και πάλι, όπως και όπου οριστικοποίηση μας είναι. 714 00:37:36,980 --> 00:37:39,980 Αν βρεθείτε ποτέ με ενδιέφερε να δω όλες οι διάφορες πιθανές εναλλακτικές λύσεις, 715 00:37:39,980 --> 00:37:45,190 απλά πηγαίνετε στην καρτέλα και αφήστε η αυτόματη συμπλήρωση καταλήξει. 716 00:37:45,190 --> 00:37:48,690 Και αν θέλετε να δημιουργήσετε, θα δείτε όλα τα διαφορετικά πράγματα που μπορείτε να δημιουργήσετε. 717 00:37:48,690 --> 00:37:50,398 Μπορείτε να δημιουργήσετε δυναμικές επεξεργαστές σενάριο, 718 00:37:50,398 --> 00:37:52,940 Εγώ δεν ξέρω καν τι είναι, για την ανάμειξη συγχωνεύσεις κανάλι 719 00:37:52,940 --> 00:37:55,930 και διαχωριστές κανάλι και όλα αυτά. 720 00:37:55,930 --> 00:37:56,430 Δροσερός. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> Έτσι, αυτό είναι μόνο ένα παράδειγμα ενός αγωγού. 723 00:38:01,390 --> 00:38:03,580 Έτσι έχουμε τρεις πηγές έρχονται. 724 00:38:03,580 --> 00:38:06,830 Ίσως αυτά είναι κυματομορφές, Ίσως αυτές είναι MP3s. 725 00:38:06,830 --> 00:38:08,740 Ένα περνά από μια φίλτρο, ένα άλλο του 726 00:38:08,740 --> 00:38:12,404 να πάρει μια άλλη διαστρεβλωμένη panning κάποιου αριστερά και δεξιά. 727 00:38:12,404 --> 00:38:15,320 Μπορείτε να κάνετε όλα τα είδη των πραγμάτων και όλα μπερδεύονται γύρω από κοινού, 728 00:38:15,320 --> 00:38:18,880 και, στη συνέχεια, βγαίνει ο ήχος στο τέλος, ως προορισμό. 729 00:38:18,880 --> 00:38:22,720 Αυτό είναι ένα παράδειγμα του τι περισσότερο περίπλοκη Web κωδικός ήχου μοιάζει. 730 00:38:22,720 --> 00:38:26,720 Είσαι δημιουργώντας όλα αυτά διάφορα αντικείμενα σωστά here-- 731 00:38:26,720 --> 00:38:27,706 Δεν είμαι σίγουρος για αυτό. 732 00:38:27,706 --> 00:38:29,120 Όχι, δεν μεγεθύνετε. 733 00:38:29,120 --> 00:38:29,620 ΕΝΤΆΞΕΙ. 734 00:38:29,620 --> 00:38:31,257 >> SAM ΠΡΑΣΙΝΟ: Μπορείτε να το κάνετε Ελέγχου, Scroll-Up. 735 00:38:31,257 --> 00:38:32,590 Χιου Zabriskie: Έλεγχος Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM ΠΡΑΣΙΝΟ: Όχι, όχι. 737 00:38:33,000 --> 00:38:33,500 Έλεγχος-- 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> Χιου Zabriskie: Ω, ελέγχου, κάντε κύλιση; 740 00:38:38,140 --> 00:38:38,780 Ω, gotcha. 741 00:38:38,780 --> 00:38:41,480 Ναι. 742 00:38:41,480 --> 00:38:42,240 Πω πω, Όχι, Όχι. 743 00:38:42,240 --> 00:38:42,740 ΕΝΤΆΞΕΙ. 744 00:38:42,740 --> 00:38:46,090 Εγώ δεν θα το κάνουμε αυτό. 745 00:38:46,090 --> 00:38:48,300 >> Οπότε ναι, σε αυτό το πρώτο ενότητα εδώ, μπορείτε να δείτε 746 00:38:48,300 --> 00:38:52,720 είμαστε η δημιουργία όλων αυτών των διαφορετικών κόμβους έξω από το πλαίσιο. 747 00:38:52,720 --> 00:38:54,980 Είμαστε ακριβώς τους συναρμολογώντας μαζί με το δεύτερο σκέλος 748 00:38:54,980 --> 00:38:56,980 από αυτή την λειτουργία που ονομάζεται Connect. 749 00:38:56,980 --> 00:38:58,830 Αυτό είναι ένα πραγματικά κλειδί λειτουργία σε Web Audio. 750 00:38:58,830 --> 00:39:01,930 Απλά σημαίνει ότι τη στιγμή που έχετε κάνει κάτι με τον ήχο σε έναν κόμβο, 751 00:39:01,930 --> 00:39:03,705 να το δώσετε στον επόμενο κόμβο. 752 00:39:03,705 --> 00:39:05,830 Έτσι έχουμε την πηγή, συνδέεται με τον αναλυτή, 753 00:39:05,830 --> 00:39:09,140 Ο αναλυτής κάνει κάτι με αυτό, πηγαίνει σε στρέβλωση, και ούτω καθεξής, 754 00:39:09,140 --> 00:39:12,725 και με τον προορισμό στην κάτω δεξιά γωνία εδώ. 755 00:39:12,725 --> 00:39:13,225 Δροσερός. 756 00:39:13,225 --> 00:39:14,640 Εντάξει, έτσι θα συνεχίσει να κινείται επάνω. 757 00:39:14,640 --> 00:39:17,180 >> Η pipeline-- πάλι, αυτά είναι τα πιο κοινά αγωγούς, 758 00:39:17,180 --> 00:39:21,300 οπότε μιλάμε για όλα αυτά τα πράγματα, όπως παραμόρφωση, panning, όλα αυτά τα πράγματα. 759 00:39:21,300 --> 00:39:24,280 Εάν είστε πραγματικά ενδιαφέρονται χρησιμοποιώντας τα πράγματα Pro Tools, 760 00:39:24,280 --> 00:39:25,820 αυτά που ενδιαφέρουν κατά πάσα πιθανότητα. 761 00:39:25,820 --> 00:39:27,740 Αν όχι, ίσως απλά θέλουν να παίξουν τον ήχο, 762 00:39:27,740 --> 00:39:29,990 ή ίσως απλά θέλετε να ρυθμίσετε την ένταση του ήχου. 763 00:39:29,990 --> 00:39:35,270 Αυτοί είναι οι δύο πιο κοινές είδος των αγωγών στην παραγωγή ήχου. 764 00:39:35,270 --> 00:39:38,640 >> Και πάλι, οι τρόποι που μπορείτε να το πάρετε στην ως oscillator-- έτσι, ας 765 00:39:38,640 --> 00:39:42,460 κάνει ένα demo του το δικαίωμα αυτό εδώ. 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 Έτσι θα πάμε να δημιουργήσουμε ένα απλό πλαίσιο ήχου εδώ, 768 00:39:52,225 --> 00:39:54,350 και από το ότι θα πάμε να δημιουργήσει ταλαντωτή μας. 769 00:39:54,350 --> 00:39:58,620 Έτσι ώστε να είναι, και πάλι, είμαστε απλά πρόκειται να καλέσει Δημιουργία ταλαντωτή. 770 00:39:58,620 --> 00:40:07,030 Εμείς πάμε για να ορίσετε μια συχνότητα ότι, 440 Hertz, το αγαπημένο όλων. 771 00:40:07,030 --> 00:40:13,290 Στη συνέχεια συνδέουμε ότι με τον προορισμό point-- που είναι ο ομιλητής, έτσι 772 00:40:13,290 --> 00:40:15,750 ο προορισμός πλαίσιο. 773 00:40:15,750 --> 00:40:21,400 Τέλος, απλά λέμε, ξεκινήστε το μηδέν δευτερόλεπτα από τώρα, και να έχουμε ήχο; 774 00:40:21,400 --> 00:40:22,400 >> [Δακτυλίωσης] 775 00:40:22,400 --> 00:40:24,980 >> Χιου Zabriskie: Εδώ πάμε. 776 00:40:24,980 --> 00:40:25,940 Είναι απλά ένα ημιτονοειδές κύμα. 777 00:40:25,940 --> 00:40:26,440 Εντάξει, δροσερό. 778 00:40:26,440 --> 00:40:28,274 Και τότε θα το σταματήσουμε αυτό. 779 00:40:28,274 --> 00:40:30,520 >> Κοινό: Πού πήγε ότι η ανατροφοδότηση προέρχεται από; 780 00:40:30,520 --> 00:40:31,250 >> Χιου Zabriskie: Η ανατροφοδότηση; 781 00:40:31,250 --> 00:40:32,458 Ω, πιθανώς μικρόφωνα μας. 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 Οπότε ναι, αυτό είναι το πώς μπορείτε να το κάνετε. 784 00:40:35,470 --> 00:40:37,261 Και πράγματι, αν είχα κράτησε το τρέξιμο, μπορείτε 785 00:40:37,261 --> 00:40:39,540 θα μπορούσε να έχει τη συχνότητα αξίας, όπως είναι το τρέξιμο, 786 00:40:39,540 --> 00:40:43,320 έτσι ώστε να είναι ένα διασκεδαστικό πράγμα που πρέπει να παίζουν. 787 00:40:43,320 --> 00:40:44,930 Δροσερός. 788 00:40:44,930 --> 00:40:46,600 Αυτό είναι πάντα μια όμορφη εκείνη που παρουσιάζει. 789 00:40:46,600 --> 00:40:48,792 >> SAM ΠΡΑΣΙΝΟ: Εμείς δεν το έκανε σκεφτούμε ότι, δεν είμαστε; 790 00:40:48,792 --> 00:40:50,500 Χιου Zabriskie: Ναι, αυτό είναι ένα δυσάρεστο ένα. 791 00:40:50,500 --> 00:40:53,249 Έτσι, ρυθμιστικό loading-- θα σας δείξω ένα παράδειγμα ότι στο τέλος. 792 00:40:53,249 --> 00:40:55,090 Αυτό είναι φόρτωση ενός MP3. 793 00:40:55,090 --> 00:40:58,880 Και μικρόφωνο, μπορείτε να χρησιμοποιήσετε μόνο μια λειτουργία ονομάζεται Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 να ζητήσει την πρόσβαση στο χρήστη μικρόφωνο για αυτές τις πληροφορίες. 795 00:41:03,240 --> 00:41:05,610 >> Εδώ είναι το φιλτράρισμα, θα μόλις συνεχίσει να κινείται από αυτό. 796 00:41:05,610 --> 00:41:08,600 Αυτό είναι αρκετά υψηλό επίπεδο, αλλά τα φίλτρα σας επιτρέπουν μόνο να 797 00:41:08,600 --> 00:41:16,154 >> [Beeping] 798 00:41:16,154 --> 00:41:18,320 Φιλτράρισμα σας επιτρέπει επίσης να δημιουργήσουν τα πράγματα όπως το ροζ 799 00:41:18,320 --> 00:41:20,050 θόρυβος, θόρυβος καφέ, λευκό θόρυβο. 800 00:41:20,050 --> 00:41:24,330 Αν θέλετε να δημιουργήσετε καθαρή θορύβου, η οποία Μερικοί άνθρωποι αγαπούν να βρωμίσει γύρω με, 801 00:41:24,330 --> 00:41:27,490 μπορείτε να χρησιμοποιήσετε το Web Audio φιλτράρισμα για να το κάνουμε αυτό. 802 00:41:27,490 --> 00:41:30,039 >> Ήχος Panning-- οπότε φανταστείτε εάν γράφετε ένα παιχνίδι 803 00:41:30,039 --> 00:41:32,330 και θέλετε να τον ήχο ακούγεται σαν να έρχεται, όπως, 804 00:41:32,330 --> 00:41:36,090 γυρίσματα σε όλη την οθόνη, μπορείτε μπορεί να χρησιμοποιήσει το panning του ήχου 805 00:41:36,090 --> 00:41:39,770 για να δημιουργήσει αυτό το είδος του κώνου, η οποία like-- είναι αρκετά Mathy, 806 00:41:39,770 --> 00:41:41,850 αλλά είναι πραγματικά πολύ δροσερό αν έχετε δουλέψει, 807 00:41:41,850 --> 00:41:44,500 και υπάρχει κάποια καλή tutorials για αυτό που μπορώ να σας στείλουμε. 808 00:41:44,500 --> 00:41:46,400 Βασικά, μπορείτε να το είδος από τη δημιουργία του ήχου 809 00:41:46,400 --> 00:41:50,480 κάτι πηγαίνει από σε ένα 3D τρόπο. 810 00:41:50,480 --> 00:41:57,350 Και αν έχετε ένα ενδιαφέρον για DJ, μπορείτε να ξεκινήστε την ανάμιξη και διασχίζουν ξεθώριασμα τραγούδια. 811 00:41:57,350 --> 00:42:01,260 >> Αυτή είναι μόνο κάποια πολύ βασικά κώδικας, βασικά αυτό που έκανα πριν. 812 00:42:01,260 --> 00:42:06,140 Αυτό ρυθμίζει την ένταση του ταλαντωτή, έτσι ώστε να δημιουργήσουμε ταλαντωτή μας 813 00:42:06,140 --> 00:42:07,380 η οποία δημιουργεί την κυματομορφή. 814 00:42:07,380 --> 00:42:09,940 Δημιουργούμε GainNode μας, ορίσετε τη συχνότητα μας, 815 00:42:09,940 --> 00:42:14,170 και, στη συνέχεια, συνδέστε το με το ταλαντωτή GainNode, η οποία στη συνέχεια ουσιαστικά αλλάζει 816 00:42:14,170 --> 00:42:16,760 πόσο σήμα επιτρέπεται μέσω. 817 00:42:16,760 --> 00:42:20,467 Αλλά πραγματικά, αυτό είναι ένα ψηφιακό πράγμα, γι 'αυτό είναι πιο just-- ναι. 818 00:42:20,467 --> 00:42:23,550 Αυτό δεν είναι ό, τι πραγματικά συμβαίνει, αλλά αυτό είναι ό, τι συμβαίνει στην πραγματική ζωή 819 00:42:23,550 --> 00:42:24,393 με ένα κέρδος. 820 00:42:24,393 --> 00:42:27,258 >> Κοινό: --quantization της παραμέτρου του όγκου; 821 00:42:27,258 --> 00:42:28,174 Χιου Zabriskie: Συγνώμη; 822 00:42:28,174 --> 00:42:30,360 Κοινό: το Α είναι κβαντοποιημένο παράμετρος όγκο; 823 00:42:30,360 --> 00:42:31,840 Χιου Zabriskie: Ναι. 824 00:42:31,840 --> 00:42:34,620 Και αυτό είναι ένα πράγμα είμαι πραγματικά με ανεπάρκεια σε σε γνώσεις μου, 825 00:42:34,620 --> 00:42:38,010 πόσο κέρδος λειτουργεί σε ένα ψηφιακό επίπεδο. 826 00:42:38,010 --> 00:42:40,140 Ξέρω ότι με τις πραγματικές σήματα, είναι ουσιαστικά 827 00:42:40,140 --> 00:42:45,120 ελέγχει πόσο είστε ενίσχυση του σήματος. 828 00:42:45,120 --> 00:42:47,017 Οπότε, ναι. 829 00:42:47,017 --> 00:42:50,100 Θα σας στείλω περισσότερες πληροφορίες σχετικά με ότι, επειδή θα ήμουν περίεργος πραγματικότητα 830 00:42:50,100 --> 00:42:51,099 για να μάθετε περισσότερα γι 'αυτό. 831 00:42:51,099 --> 00:42:54,090 Αλλά βασικά οι παράμετροι είναι, το ένα είναι η fold-- 832 00:42:54,090 --> 00:42:59,690 το δυνατότερο signal-- και μηδέν δεν είναι σήμα, ή δεν θα ακούσετε κανέναν ήχο. 833 00:42:59,690 --> 00:43:03,150 Θα παραλείψετε χρόνο demo για το λόγω είναι βασικά αυτό που έκανα πριν. 834 00:43:03,150 --> 00:43:07,630 Και πάλι, η Context.Destination είναι ο κόμβος προορισμού ήχου. 835 00:43:07,630 --> 00:43:08,360 Φοβερό, εντάξει. 836 00:43:08,360 --> 00:43:10,470 >> Έτσι, Πάω να κάνω ένα γρήγορο δύο demos. 837 00:43:10,470 --> 00:43:11,760 Πώς τα πάμε στην ώρα τους; 838 00:43:11,760 --> 00:43:12,640 >> ΟΜΙΛΗΤΗΣ 1: Περίπου 10 λεπτά. 839 00:43:12,640 --> 00:43:13,130 >> Χιου Zabriskie: 10 λεπτά; 840 00:43:13,130 --> 00:43:13,630 Εξαιρετική! 841 00:43:13,630 --> 00:43:14,320 Φοβερός. 842 00:43:14,320 --> 00:43:19,010 >> Έτσι, η πρώτη Πάω να κάνετε, αυτό λέγεται το αγαπημένο μου τραγούδι. 843 00:43:19,010 --> 00:43:22,410 Έτσι, αυτό είναι μόνο ένα λίγο HTML JavaScript. 844 00:43:22,410 --> 00:43:25,510 Εμείς πάμε για να έχουν δύο κουμπιά στη σελίδα παίξουν το αγαπημένο μου τραγούδι 845 00:43:25,510 --> 00:43:29,192 και να σταματήσει το αγαπημένο μου τραγούδι. 846 00:43:29,192 --> 00:43:30,180 Θα αλλάξει αυτό. 847 00:43:30,180 --> 00:43:32,110 >> Κοινό: Καλύψτε το μικρόφωνό σας. 848 00:43:32,110 --> 00:43:33,430 >> Χιου Zabriskie: Ναι. 849 00:43:33,430 --> 00:43:36,300 Και έχω φορτωθεί εδώ ένα σενάριο που basically-- 850 00:43:36,300 --> 00:43:38,520 και αυτό είναι πραγματικά χρήσιμο για τη φόρτωση ενός MP3, 851 00:43:38,520 --> 00:43:41,820 έτσι αυτό ακριβώς κάνει φόρτωση MP3s πολύ πιο γρήγορα. 852 00:43:41,820 --> 00:43:44,180 Είναι ουσιαστικά μόνο ένα περιτύλιγμα. 853 00:43:44,180 --> 00:43:48,737 Κάνει ακριβώς τη διαδικασία της φόρτωση σε MP3s πολύ πιο γρήγορα, 854 00:43:48,737 --> 00:43:51,570 αλλιώς είστε χρησιμοποιώντας αίτημα HTTP, κάτι σαν αυτό που κάναμε 855 00:43:51,570 --> 00:43:53,950 σχετικά με την τρέχουσα κομμάτι που με διακομιστή. 856 00:43:53,950 --> 00:43:55,950 Είναι πραγματικά άσχημο, σας Δεν θέλω να το κάνω. 857 00:43:55,950 --> 00:44:04,110 >> Έτσι αυτός ο τύπος, Μπόρις ΜΜΕ, έγραψε ένα πραγματικά χρήσιμο εργαλείο που λέγεται BufferLoader. 858 00:44:04,110 --> 00:44:08,780 Όλα όσα κάνουμε είναι απλά να περάσει αυτό το πλαίσιο, που το ένα list-- περάσει 859 00:44:08,780 --> 00:44:11,327 ή, ναι, είναι ένας κατάλογος σε JavaScript; 860 00:44:11,327 --> 00:44:12,160 SAM ΠΡΑΣΙΝΟ: Μια σειρά. 861 00:44:12,160 --> 00:44:14,201 Χιου Zabriskie: Ω, είναι μια σειρά, αυτό είναι σωστό. 862 00:44:14,201 --> 00:44:18,660 Είναι μια σειρά από μονοπάτια σε διαφορετικά αρχεία. 863 00:44:18,660 --> 00:44:21,990 Και τότε θα είναι μια συνάρτηση περάσει. 864 00:44:21,990 --> 00:44:25,530 Αυτή είναι η επανάκληση μιλούσαμε σχετικά με ασύγχρονη φόρτωση. 865 00:44:25,530 --> 00:44:28,720 Που θα κληθούν μια φορά τα αρχεία που φορτώνονται. 866 00:44:28,720 --> 00:44:33,780 Και ότι η λειτουργία που καλείται όταν το αρχείο είναι φορτωμένο λαμβάνει ως περίμετρο 867 00:44:33,780 --> 00:44:35,840 μια σειρά από ρυθμιστικά φορτωμένο. 868 00:44:35,840 --> 00:44:37,990 Έτσι ώστε να συμβαίνει εδώ. 869 00:44:37,990 --> 00:44:41,180 Βασικά, είναι BufferList πρόκειται να είναι ένα value-- 870 00:44:41,180 --> 00:44:46,380 ή πρόκειται να είναι μια σειρά από μήκος το ένα, που έχει μέσα του δείκτη 871 00:44:46,380 --> 00:44:51,320 μηδέν ολόκληρο το φορτωμένο αρχείο του MP3. 872 00:44:51,320 --> 00:44:53,320 Λοιπόν, τι να κάνω όταν τελειώσω φόρτωσης είναι, απλά 873 00:44:53,320 --> 00:44:57,430 δημιουργήσετε ένα ρυθμιστικό πηγή, η οποία είναι ένα ηχητικό κόμβο πηγή ρυθμιστικό. 874 00:44:57,430 --> 00:45:03,410 Το επόμενο βήμα είναι η τοποθέτηση των στο source.buffer ως πλήρες ρυθμιστικό φορτίο 875 00:45:03,410 --> 00:45:06,740 από την BufferList-- είναι μια πολύ buffers-- 876 00:45:06,740 --> 00:45:10,255 και, στη συνέχεια, μπορείτε να συνδέσετε ότι ήχου ρυθμιστικό προς τον προορισμό. 877 00:45:10,255 --> 00:45:12,380 Έτσι τι πρόκειται να κάνουμε Είναι απλά βάλτε το MP3 878 00:45:12,380 --> 00:45:15,260 κατ 'ευθείαν μέσα στην έξοδο, και να αρχίσει αμέσως 879 00:45:15,260 --> 00:45:18,010 μετά να πάρει αυτό το κάλεσμα. 880 00:45:18,010 --> 00:45:21,660 >> Cool, οπότε ας δούμε αυτό να συμβεί σε δράση. 881 00:45:21,660 --> 00:45:24,490 Μου [δεν ακούγεται] εδώ, ας δούμε. 882 00:45:24,490 --> 00:45:26,430 Έτσι, είμαι απλώς πρόκειται να ξεκινήσετε ένα βασικό διακομιστή. 883 00:45:26,430 --> 00:45:28,660 Αυτό είναι κάτι που που πρέπει να κάνετε αν είστε 884 00:45:28,660 --> 00:45:32,490 υποβολής αιτήσεων για τη φόρτωση αρχείων. 885 00:45:32,490 --> 00:45:34,140 Πάω να ξεκινήσει μια βασική διακομιστή. 886 00:45:34,140 --> 00:45:38,200 Αυτό είναι βασικά ολόκληρο σας PSET τώρα σε μία γραμμή, 887 00:45:38,200 --> 00:45:43,930 αλλά αυτό είναι ακριβώς που αρχίζουν ένα διακομιστή στο λιμάνι 80/80. 888 00:45:43,930 --> 00:45:47,300 Γι 'αυτό και πάει πέρα ​​από εδώ, εμείς πρόκειται να τοποθετήσετε 80/80, 889 00:45:47,300 --> 00:45:49,110 θα πάμε για να πάει στο αγαπημένο μου τραγούδι. 890 00:45:49,110 --> 00:45:51,660 Έτσι, αν χτύπησα "Παίξε μου αγαπημένο τραγούδι «τώρα, 891 00:45:51,660 --> 00:45:53,964 πρόκειται να φορτώσει μου αγαπημένο τραγούδι και να παίξετε it-- 892 00:45:53,964 --> 00:45:55,880 [ΜΟΥΣΙΚΗ - οι αετοί »ΖΩΗ ΣΤΗΝ ΓΡΗΓΟΡΑ  ΜΟΝΟΠΆΤΙ"] 893 00:45:55,880 --> 00:46:00,490 --which συμβαίνει να είναι "Η ζωή στην το Fast Lane "από τους The Eagles. 894 00:46:00,490 --> 00:46:06,346 Τώρα, θα μπορούσα να χτυπήσει "Σταματήστε μου αγαπημένο τραγούδι »και επαναλαμβάνει. 895 00:46:06,346 --> 00:46:09,160 >> [ΜΟΥΣΙΚΗ - οι αετοί »ΖΩΗ ΣΤΗΝ ΓΡΗΓΟΡΑ  ΜΟΝΟΠΆΤΙ"] 896 00:46:09,160 --> 00:46:18,340 >> Και αν πάω πάνω στην κονσόλα, γιατί Θα χρησιμοποιηθεί μια καθολική μεταβλητή εδώ 897 00:46:18,340 --> 00:46:23,390 να παρακολουθείτε την τιμή αυτή, πράγματι Τώρα θα αναγνωρίζονται στην κονσόλα. 898 00:46:23,390 --> 00:46:25,160 Έτσι αυτόματα δημιουργεί για μένα. 899 00:46:25,160 --> 00:46:29,991 Έτσι, αυτό είναι που παίζει αυτή τη στιγμή, και μπορώ να απλά να καλέσετε source.stop () 900 00:46:29,991 --> 00:46:30,490 σε αυτό. 901 00:46:30,490 --> 00:46:34,930 902 00:46:34,930 --> 00:46:35,860 Λοιπόν, ξέρετε τι; 903 00:46:35,860 --> 00:46:39,760 Ακριβώς έτσι εσείς έχετε ακούσει αυτό song-- μπορεί να αναγνωρίσει αυτό το τραγούδι. 904 00:46:39,760 --> 00:46:41,801 >> [ΜΟΥΣΙΚΗ - RICK Astley, "ΠΟΤΕ GONNA GIVE  ΕΣΎ ΠΆΝΩ"] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [ΜΟΥΣΙΚΗ - οι αετοί »ΖΩΗ ΣΤΗΝ ΓΡΗΓΟΡΑ  ΜΟΝΟΠΆΤΙ"] 907 00:46:44,215 --> 00:46:46,195 Έχουμε τώρα όλα έχουν Rickrolled. 908 00:46:46,195 --> 00:46:50,155 Εντάξει, μεγάλη, κινείται. 909 00:46:50,155 --> 00:46:51,160 Δροσερός. 910 00:46:51,160 --> 00:46:54,554 Έτσι, αυτό είναι βασικά ένα παράδειγμα πόσο θα μπορούσε να φορτώσετε ένα MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [ΜΟΥΣΙΚΗ - οι αετοί »ΖΩΗ ΣΤΗΝ ΓΡΗΓΟΡΑ  ΜΟΝΟΠΆΤΙ"] 912 00:46:56,470 --> 00:46:59,590 --and να παίξει, και να σταματήσει και να αρχίσει αυτό. 913 00:46:59,590 --> 00:47:03,008 Θα μπορούσα να είχα κάνει πολλά περισσότερα [δεν ακούγεται] 914 00:47:03,008 --> 00:47:07,570 >> Η τελευταία θα κάνω είναι, Θα σας δείξω ένα [δεν ακούγεται]. 915 00:47:07,570 --> 00:47:18,070 >> [Παίζει μουσική] 916 00:47:18,070 --> 00:47:21,800 >> Είναι σαν, ogg.wave.mp3. 917 00:47:21,800 --> 00:47:26,450 Νομίζω ότι, αν θυμάμαι καλά, Έχω τρέξει σε κάποια θέματα με .m4a, 918 00:47:26,450 --> 00:47:27,721 αλλά δεν είμαι σίγουρος γι 'αυτό. 919 00:47:27,721 --> 00:47:28,470 Νομίζω mp3.wave-- 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [ΜΟΥΣΙΚΗ - RICK Astley, "ΠΟΤΕ GONNA GIVE  ΕΣΎ ΠΆΝΩ"] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> Εντάξει μια χαρά. 924 00:47:36,500 --> 00:47:37,625 Δεν θα έπρεπε να πει ότι. 925 00:47:37,625 --> 00:47:40,570 Τέλος πάντων, γεια σου. 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 Έτσι έχουμε αυτή την ανοικτή. 928 00:47:45,490 --> 00:47:52,320 Έτσι τώρα το μόνο που κάνω είναι, εγώ βασικά δημιουργήθηκε μια βασική σύνταξη για τη δημιουργία μουσικής. 929 00:47:52,320 --> 00:47:57,610 Έτσι, αν κάνω κάτι σαν, προσθέστε g4 σε 1 2, αυτό σημαίνει ότι, 930 00:47:57,610 --> 00:48:00,950 προσθέστε το σημείωμα πιάνο, G4, η οποία είναι η τέταρτη G 931 00:48:00,950 --> 00:48:02,680 επάνω στο πιάνο από τον πυθμένα. 932 00:48:02,680 --> 00:48:05,930 Έτσι, αυτό είναι το είδος του MIDI μιλούν, Έτσι, για όσους είναι με βάση τη μουσική, 933 00:48:05,930 --> 00:48:07,860 αυτό είναι μόνο MIDI νότες. 934 00:48:07,860 --> 00:48:10,090 >> Κοινό: Αυτό είναι το G της Μέσης C, έτσι δεν είναι; 935 00:48:10,090 --> 00:48:11,840 >> Χιου Zabriskie: Αυτό είναι το G πάνω από το μέσο C, αυτό είναι σωστό. 936 00:48:11,840 --> 00:48:12,470 >> Κοινό: Πάνω Μέση C. 937 00:48:12,470 --> 00:48:13,345 >> Χιου Zabriskie: Ναι. 938 00:48:13,345 --> 00:48:14,340 Στην πραγματικότητα, ναι. 939 00:48:14,340 --> 00:48:16,131 Νομίζω ότι πραγματικά έκανε είναι ένα [δεν ακούγεται], 940 00:48:16,131 --> 00:48:18,860 έτσι αυτό θα μπορούσε να είναι μια οκτάβα πάνω από αυτό. 941 00:48:18,860 --> 00:48:20,070 Ας δούμε λοιπόν. 942 00:48:20,070 --> 00:48:21,152 Αν χτύπησα Play-- 943 00:48:21,152 --> 00:48:22,110 [ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΠΙΑΝΟ ΣΗΜΕΙΩΣΗ] 944 00:48:22,110 --> 00:48:23,200 --we're πρόκειται να το ακούω αυτό. 945 00:48:23,200 --> 00:48:25,700 Η ιδέα είναι ότι λειτουργεί ακριβώς όπως μια γραμμή εντολών θα ήταν, 946 00:48:25,700 --> 00:48:27,510 οπότε αν πάω πάνω και κάτω στο πληκτρολόγιό μου, 947 00:48:27,510 --> 00:48:31,550 μπορεί να πάει πίσω στην προηγούμενη εντολές, το οποίο είναι αρκετά χρήσιμο. 948 00:48:31,550 --> 00:48:35,136 Και παρακάτω είναι λίστα μου των κομματιών, τα οποία είναι όλα εκτελούνται στον βρόχο. 949 00:48:35,136 --> 00:48:38,260 >> Κοινό: Θα ήταν αν υποτεθεί ότι η 88-κλειδί πληκτρολόγιο σε αυτό, έτσι δεν είναι; 950 00:48:38,260 --> 00:48:41,051 >> Χιου Zabriskie: Το ερώτημα ήταν, είμαι υποθέτοντας ένα 88-κλειδί πληκτρολόγιο, 951 00:48:41,051 --> 00:48:41,990 και ναι, είμαι. 952 00:48:41,990 --> 00:48:45,030 Αυτό που έκανα εγώ είναι βασικά πήρε 88 δείγματα 953 00:48:45,030 --> 00:48:46,970 του πιάνου, μία για κάθε νότα. 954 00:48:46,970 --> 00:48:49,180 Και έτσι κάθε φορά που ακούσετε ένα σημείωμα από τώρα και στο εξής, 955 00:48:49,180 --> 00:48:57,550 ότι είναι στην πραγματικότητα ένας βρόχος που μοιάζει like-- Αυτό παίρνει παίζεται σε βρόχο, 956 00:48:57,550 --> 00:49:00,120 Έτσι, για κάθε νότα, αυτό λειτουργεί. 957 00:49:00,120 --> 00:49:02,860 Αυτό που συμβαίνει είναι, δημιουργήσετε ξανά ένα ρυθμιστικό, 958 00:49:02,860 --> 00:49:06,010 Έχω δημιουργήσει ένα κόμβο κέρδος για να ρυθμίσετε την ένταση του ήχου. 959 00:49:06,010 --> 00:49:08,240 Αυτό ακριβώς μια πραγματικά πολύπλοκο τρόπο του λέγοντας ότι 960 00:49:08,240 --> 00:49:10,550 αποθηκεύσετε το buffer σε source.buffer. 961 00:49:10,550 --> 00:49:13,160 Δίνω το κέρδος, εγώ συνδέστε το με το κέρδος, 962 00:49:13,160 --> 00:49:15,576 το κέρδος είναι συνδεδεμένο με το εξόδου, και στη συνέχεια να παίζω. 963 00:49:15,576 --> 00:49:20,735 Έτσι, αυτό είναι το είδος της διαδικασίας από τη λήψη σε ένα ρυθμιστικό πηγή. 964 00:49:20,735 --> 00:49:24,820 >> Κοινό: Μπορείς να λάβει πράγματι ότι ξηρό ήχο και να βραχεί [δεν ακούγεται]; 965 00:49:24,820 --> 00:49:26,260 >> Χιου Zabriskie: Μπορείτε, ναι. 966 00:49:26,260 --> 00:49:29,260 Υπάρχει νέου ρήμα, υπάρχει καθυστέρηση, παραμόρφωση. 967 00:49:29,260 --> 00:49:33,260 Μπορείτε να βάλετε σε βασικά τίποτα μεταξύ των εν λόγω σάντουιτς of-- καλά, 968 00:49:33,260 --> 00:49:37,660 αγωγός είναι μια καλύτερη μεταφορά, αλλά μπορείτε να προσθέσετε κάτι σε αυτό. 969 00:49:37,660 --> 00:49:38,200 Δροσερός. 970 00:49:38,200 --> 00:49:40,280 >> Γι 'αυτό και θα τελειώσει το demo εδώ για να σας δώσει μια αίσθηση 971 00:49:40,280 --> 00:49:46,390 μόνο ο απόλυτος αριθμός των φορών που να εκτελέσετε αυτή τη λειτουργία μονομιάς. 972 00:49:46,390 --> 00:49:49,280 Έτσι, Πάω να καταργήσετε αυτό. 973 00:49:49,280 --> 00:49:59,110 Πάω να δημιουργήσετε μια γεννήτρια that-- βασικά αυτό does-- αυτό είναι πραγματικά 974 00:49:59,110 --> 00:50:04,220 το είδος της μια περίπλοκη syntax-- αλλά είναι πρόκειται να δημιουργήσει σημειώσεις σχετικά με την πετάξει, 975 00:50:04,220 --> 00:50:06,601 και μόλις αρχίσετε να παίζετε τους, καθώς τους αξιολογεί. 976 00:50:06,601 --> 00:50:07,392 [Παρεμβολή PIANO] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> Έτσι, μπορούμε να κάνουμε λίγο μουσική εδώ. 979 00:50:12,817 --> 00:50:13,608 [Παρεμβολή PIANO] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> Λοιπόν, τι αυτή η εντολή κάνει, για παράδειγμα, είναι 982 00:50:41,470 --> 00:50:46,910 αλλά δέχεται τα τρία σημειώματα για το πιάνο και στη συνέχεια τους βάζει σε Β3. 983 00:50:46,910 --> 00:50:48,660 Αυτή η σύνταξη μπορεί να κάνει λίγο περισσότερο νόημα 984 00:50:48,660 --> 00:50:50,590 σε εκείνους που έχουν μουσική υπόκρουση εδώ. 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> Μπορώ να προσθέσω μια μπότα. 987 00:50:56,551 --> 00:50:57,050 Εγώ μπορώ-- 988 00:50:57,050 --> 00:50:58,048 >> [Παρεμβολή ΜΕΣΑ] 989 00:50:58,048 --> 00:50:59,256 >> --just παίζουν με αυτό. 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> Έτσι, μπορείτε να make-- 992 00:51:13,474 --> 00:51:14,515 [Παρεμβολή ΜΕΣΑ] 993 00:51:14,515 --> 00:51:15,513 Αυτό και μόνο είναι λίγο πιο ενοχλητικό. 994 00:51:15,513 --> 00:51:16,554 [Παρεμβολή ΜΕΣΑ] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> Έτσι ώστε να προσθέτει τυχαία ένα στεγνό κύμβαλο σε κάθε 16η σημείωμα, με το 16% 997 00:51:30,981 --> 00:51:31,481 [ΜΗ ΑΚΟΥΣΤΌΣ]. 998 00:51:31,481 --> 00:51:32,522 >> [Παρεμβολή ΜΕΣΑ] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> Ναι, έτσι ο τρόπος με τον works-- είναι πάντα σε 4: 4. 1001 00:51:50,400 --> 00:51:51,441 [Παρεμβολή ΜΕΣΑ] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> Ναι, έτσι τα τέσσερα τρίμηνα, και 16/8. 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [Παρεμβολή ΜΕΣΑ] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> Έτσι, κατά μέσο όρο, μπορείτε να πάρετε το 60% επισκέψεις στο 16ο σημειώσεις. 1008 00:52:33,780 --> 00:52:35,990 >> Anyways, αυτό ήταν απλά είδος για να αναδείξουν 1009 00:52:35,990 --> 00:52:39,780 μερικά από τα πράγματα που θα μπορούσατε χτίσει με το Web Audio API. 1010 00:52:39,780 --> 00:52:43,840 Είναι πραγματικά ισχυρό, είναι πραγματικά γρήγορα, και μπορείτε να κάνετε πολλά δροσερά πράγματα 1011 00:52:43,840 --> 00:52:44,340 Με αυτό. 1012 00:52:44,340 --> 00:52:51,260 Έτσι και πάλι, οποιεσδήποτε ερωτήσεις έχετε, e-mail myself-- Hugh-- ή Σαμ, 1013 00:52:51,260 --> 00:52:55,869 και ειλικρινά, η Google έχει ένας τόνος των καλών πηγών. 1014 00:52:55,869 --> 00:52:56,660 Καμιά τελευταία ερώτηση; 1015 00:52:56,660 --> 00:52:57,970 Ναι. 1016 00:52:57,970 --> 00:53:00,790 >> Κοινό: Έτσι μπορείτε να έχετε πρόσβαση το ενσωματωμένο μικρόφωνο. 1017 00:53:00,790 --> 00:53:03,089 Τι και αν θα ήθελε να χρησιμοποιήστε ένα καλύτερο μικρόφωνο; 1018 00:53:03,089 --> 00:53:05,380 Χιου Zabriskie: Αν ήθελε για την καλύτερη χρήση του μικροφώνου; 1019 00:53:05,380 --> 00:53:11,320 Έτσι και πάλι, αυτό είναι μέρος του αφαίρεση μεταξύ Chrome 1020 00:53:11,320 --> 00:53:12,950 και το υπόλοιπο του υπολογιστή σας. 1021 00:53:12,950 --> 00:53:18,950 Αν δεν είναι διαθέσιμη μέσω του ένα API, όπως MIDI Web API, 1022 00:53:18,950 --> 00:53:22,030 θα μπορούσατε να βρείτε πιθανώς κάποιες αμυχές, αλλά γενικά δεν είναι εφικτό. 1023 00:53:22,030 --> 00:53:25,300 >> SAM ΠΡΑΣΙΝΟ: Μπορείτε να also-- όλα τα ξέρει Chrome 1024 00:53:25,300 --> 00:53:28,820 είναι ό, τι προεπιλεγμένη μικρόφωνο σας είναι, και αυτό τις προσβάσεις. 1025 00:53:28,820 --> 00:53:33,410 Έτσι, αν είχατε ένα μικρόφωνο θα μπορούσατε ορίσετε ως προεπιλογή το μικρόφωνο του υπολογιστή, 1026 00:53:33,410 --> 00:53:35,990 μπορείτε να έχετε πρόσβαση με αυτόν τον τρόπο και θα ήταν πιθανώς λειτουργήσει. 1027 00:53:35,990 --> 00:53:37,490 Χιου Zabriskie: Αυτό είναι ένα καλό σημείο. 1028 00:53:37,490 --> 00:53:39,656 Ποτέ δεν έχω δοκιμάσει αυτό, αλλά να είστε σε θέση να το είδος 1029 00:53:39,656 --> 00:53:45,700 of-- αν ανακατευθύνει την είσοδο μεγαφώνου, να είστε σε θέση να το κάνουμε αυτό, ναι. 1030 00:53:45,700 --> 00:53:48,360 >> Καμιά τελευταία ερώτηση; 1031 00:53:48,360 --> 00:53:49,340 Δροσερός. 1032 00:53:49,340 --> 00:53:51,680 Καλά σας ευχαριστήσω τόσο πολύ για την προσοχή. 1033 00:53:51,680 --> 00:53:52,199 Είμαι Hugh. 1034 00:53:52,199 --> 00:53:52,990 SAM ΠΡΑΣΙΝΟ: Είμαι Σαμ. 1035 00:53:52,990 --> 00:53:55,410 Χιου Zabriskie: Και αυτό είναι CS50. 1036 00:53:55,410 --> 00:53:56,767