>> SAM GREEN: สวัสดีทุกคน
ยินดีต้อนรับสู่งานสัมมนาของเรา
ฉันชื่อแซม.
HUGH Zabriskie: ฉันฮิวจ์
SAM GREEN: และเรากำลังจะพูดคุยในวันนี้ เกี่ยวกับเว็บ JavaScript และเสียงของ API
เพียงแค่การเริ่มต้นนี้เป็นเค้าร่าง ของวาระการประชุมของเราสำหรับการสัมมนา
เรากำลังจะเริ่มต้นด้วยการพูดคุยเกี่ยวกับ เหตุผลที่คุณควรจะสนใจในเว็บ
API เสียงทำไม JavaScript ภาษาที่คุณต้องการสำหรับมัน
แล้วพูดคุยเกี่ยวกับ JavaScript essentials-- เพื่อให้เหมือน
คุณเดินผ่านบางส่วน พื้นฐานของภาษา
แล้วพูดคุยเกี่ยวกับ เสียง API ในระดับสูง
จากนั้นฮิวจ์จะพูดคุยเกี่ยวกับบางส่วน ในขั้นตอนของการผลิตเสียง
แล้วซีเควนสาธิตนี้น่ากลัว โครงการเขาสร้างและแสดงรหัส
และจากนั้นเราจะได้มีเวลาสำหรับ คำถามในตอนท้ายสำหรับคนที่
ที่อยู่ที่นี่มีชีวิตอยู่
>> HUGH Zabriskie: เย็น
>> SAM GREEN: เย็น
>> HUGH Zabriskie: เย็น
ฉันจะสำรอง
>> SAM GREEN: ดังนั้นสิ่งแรกแรก
ดังนั้นหนึ่งในสิ่งที่ดี เกี่ยวกับเว็บเสียงของ API
คือการที่ไม่มีการตั้งค่าที่จำเป็น
มันมาในตัว เบราว์เซอร์ที่ทันสมัย​​ที่สุด
รวมทั้งโครเมี่ยม, ขอบทั้งหมด พวงของ others-- ทุกคน
ส่วนใหญ่ของ คนใช้วันนี้
จึงมีการตั้งค่าไม่ขึ้น นอกเหนือจากเพียงการ
เว็บเซิร์ฟเวอร์ไปสำหรับ คุณสามารถเริ่มต้นการทำงาน
ในโครงการของคุณซึ่งเป็นที่ดี
>> เราขอแนะนำให้สวย อย่างหนักว่าคุณจะพิจารณา
ใช้ Chrome สำหรับ การพัฒนาเว็บ JavaScript,
เพียงเพราะนักพัฒนา เครื่องมือที่ดีจริงๆ
เป็นตัวอย่างของเพียงสิ่งที่เราหมายถึง โดยกล่าวว่าเปิด JavaScript ของคุณ
console-- ถ้าคุณไปเป็นโครเมี่ยม และคุณดูหน้าเว็บใด ๆ ,
และคุณคลิกซ้าย ตรวจสอบธาตุแล้ว
คุณไปนี้หล่นลงเ​​พียงเล็กน้อย ที่นี่และคุณคลิกที่คอนโซล
คุณจะเห็นสิ่งที่เปิดดู จำนวนมากเช่นที่พร้อมรับคำสั่งคุณ
อาจจะเห็นบน Mac ของคุณหรือในรหัส
และเช่นเดียวกับที่เราสามารถ คำสั่งประเภทที่นี่เช่นล้าง
และคำสั่งอื่น ๆ เช่นเดียวกับที่
เราสามารถสร้างตัวแปรเช่น เราจะได้เห็นต่อไปใน JavaScript
ดังนั้นสิ่งที่เราสามารถทำได้ใน JavaScript เราสามารถทำอะไรกับคอนโซล
และนั่นคือวิธีที่สะดวกสุดที่จะ เริ่มเล่นรอบกับ APIs
และได้รับความสะดวกสบายด้วย JavaScript ขวาปิดค้างคาว
ตั้งค่าไม่จำเป็นต้อง ซึ่งเป็นสิ่งที่ดีจริงๆ
เย็น.
ที่น่ากลัว
>> ดังนั้นเพียงแค่สิ่งหนึ่งที่จะเพิ่มมากขึ้น
หากคุณมี questions-- มี หลายท่านที่ไม่ได้อยู่ที่นี่อยู่
อย่าลังเลที่จะส่งอีเมล us-- เหล่านี้ คือที่อยู่อีเมลของเรา
หากคุณมีคำถาม คุณไม่ต้องการที่จะถามเรา
เช่นโอ้ฉันมีข้อผิดพลาด ในรหัสของฉันหรือบางสิ่งบางอย่าง
ที่เฉพาะเจาะจงน้อยมาก บางทีมันเป็นครั้งแรกของ Google
มีจำนวนมากของทรัพยากรที่ดี เกี่ยวกับเว็บ Audio API ออกมี
มันเป็นเรื่องดีจริงๆ เอกสารและจะเป็น
ใช้โดยตันของคนใน อุตสาหกรรมและคนที่เป็นเพียง
การสร้างสิ่งที่สนุกสำหรับตัวเอง
ดังนั้นควรจะมีเป็นจำนวนมาก ของทรัพยากรออกมี
ที่น่ากลัว
>> เย็นดังนั้นทำไมเว็บ API เสียงหรือไม่
แผนภาพนี้เป็นนิด ๆ หน่อย ๆ ของวิวัฒนาการของวิธีการที่
เสียงบนเว็บที่มีการเติบโตในช่วงเวลา
Bgsound เป็นเหมือนแท็กเดิม ว่า Internet Explorer ใช้ในการสนับสนุน
มันได้รับอนุญาตเท่านั้นสำหรับเสียงสวยขั้นพื้นฐาน ฟังก์ชั่นที่ไม่ได้แข็งแกร่งมาก
และคุณไม่สามารถทำอะไรได้ ลำดับที่ซับซ้อน
หรือควบคุมเสียงเมื่อเริ่มต้น และหยุดตัวดีมาก
ดังนั้นจึงไม่ได้โดยเฉพาะอย่างยิ่ง การพัฒนาที่ดี
แล้วหลังจากที่แฟลช along-- มาซึ่ง
ฉันแน่ใจว่าพวกคุณมีความคุ้นเคยทั้งหมด กับ Flash-- อาจจะไม่ได้วิธีการทำงาน
แต่คุณเคยเห็นมันอย่างแน่นอน
คุณได้มีการปรับปรุง Flash ของคุณ Plug-in ทุกชนิดของสิ่งที่
และที่แน่นอนขยายช่วง ของการทำงานที่มีอยู่
แต่ทำให้ผู้ใช้ติดตั้ง plug-in แน่นอน
ข้อเสียเปรียบที่จะรวมทั้งแฟลช ในการประยุกต์ใช้คุณใช่ไหม?
เพราะคุณก็ขึ้นอยู่กับ ผู้ใช้ไปและหานี้ plug-in
และอาจจะถูกเปิด โดยขั้นตอนพิเศษนี้
พวกเขาจะต้องใช้เวลาในการใช้ app ของคุณ
และจากนั้นก็อาจจะมีการปรับปรุง ที่จะทำลายแอพลิเคชันของคุณทั้งหมด
และจะสิ้นสุดขึ้นเป็นฝันร้าย สำหรับนักพัฒนาที่มากเกินไป
เพื่อให้เป็นสิ่งกีดขวาง
>> และแล้วหลังจากนั้นมาพร้อม แท็กเสียง HTM​​L ซึ่ง
เป็นคุณลักษณะของ HTM​​L-- ที่ทันสมัย​​มากขึ้นซึ่ง ที่ได้รับอนุญาตอย่างแน่นอนสำหรับหลายสิ่งมากขึ้น
แต่สิ่งที่คุณสามารถทำได้ มีนิด ๆ หน่อย ๆ ถูก จำกัด เพียงแค่
เป็นผลมาจากสิ่งที่ HTML ที่เป็นความสามารถในการ
ดังนั้นเมื่อ JavaScript API เว็บเสียง API ที่
กลายเป็นมาตรฐาน ปฏิบัติในเบราว์เซอร์
ที่ขยายจริงๆชุด โอกาสสำหรับนักพัฒนา
จริงๆได้รับเข้าไปในอาคาร สิ่งที่เย็นสำหรับเว็บ
เป็นเวลานานได้มี รับเครื่องมือที่มีประสิทธิภาพจริงๆ
สำหรับการใช้งานเสียงพื้นเมือง like-- ทุกคนรู้ GarageBand,
และจากนั้นเห็นได้ชัดว่ามีมากขึ้น การใช้งานผสมเสียงระดับมืออาชีพ
และชนิดของสิ่งที่
แต่มีไม่ได้เป็น ดีจริงๆ Cloud-- ไม่
เมฆใช่ผมคิดว่า Cloud-- แพลตฟอร์มบนเว็บ
ที่จะช่วยให้นักพัฒนาที่จะ สร้างโปรแกรมประยุกต์สำหรับคน
ที่จะทำเสียงผสม
และในขณะที่เขาจะแสดงให้คุณ ต่อมาเว็บ Audio API
ช่วยให้มีประสิทธิภาพจริงๆ สิ่งที่จะเกิดขึ้นจริงเพียง
ซึ่งเป็นเย็นสวย
เพื่อให้การเรียนการสอนไปทำไมคุณ ควรจะดูส่วนที่เหลือของการสัมมนา
เป็นพื้น
>> และตอนนี้ฉันจะพูดคุยเกี่ยวกับ บาง JavaScript-- เพียงองค์ประกอบพื้นฐาน
ของภาษาเพื่อให้ เราสามารถจะอยู่ในหน้าเดียวกัน
เมื่อเราพูดคุยเกี่ยวกับ API นิด ๆ หน่อย ๆ ในภายหลัง
เย็น.
>> ดังนั้นนี้เป็นบทสรุป
ฉันลืมนี้อยู่ที่นี่
ใช่.
>> HUGH Zabriskie: มีสองภาพนิ่งที่นี่
>> SAM GREEN: นี่คือสรุป บางส่วนของข้อ จำกัด
ของอื่น ๆ ที่มีผลผูกพัน, วิธีการเดิม
และแล้วตอนนี้เรามีสิ่งเหล่านี้
เย็น.
ที่น่ากลัว
>> ดังนั้นข้อมูลสำคัญ JavaScript
สิ่งแรกที่มี แตกต่างที่สำคัญสวย
เมื่อเทียบกับใน JavaScript ใน ภาษาเช่น C ในทาง
ตัวแปรที่ถูกสร้างขึ้น
ดังนั้นใน C เราจะใช้ในการมี พิมพ์ตัวแปรของเราใช่มั้ย?
และผมไม่ได้หมายถึงประเภทเช่น พิมพ์ไว้ในผมหมายถึงชนิด
เช่นกำหนดให้มีความหมาย type-- เหมือนเป็น int, ลอย, ถ่าน
ใน C เราถูกนำมาใช้จริงๆ ต้องสร้างตัวแปร
แล้วติดชนิดสำหรับที่ ตลอดเวลาที่เราใช้ตัวแปรที่
และนั่นคือไม่จำเป็นต้องแย่ลง แต่มันอาจจะยากที่จะใช้
หนึ่งในคุณสมบัติที่เย็น ของ JavaScript เป็น
ตัวแปรที่มีสิ่งที่เรียกว่า "พิมพ์แบบไดนามิก" ซึ่ง
หมายความว่าผมสามารถสร้าง ตัวแปรที่มีไวยากรณ์ที่
varX เท่ากับ 5 ยกตัวอย่างเช่น
ที่ แต่เดิมสร้าง จำนวนเต็ม variable--
ที่เหมาะสมภายใต้ เครื่องดูดควัน somewhere-- แต่ฉัน
สามารถเปลี่ยนตัวแปรที่ ในการอ้างถึงสตริง
โดยไม่ต้องทำอะไรเช่น สร้างตัวแปรใหม่
ผมไม่จำเป็นต้องกังวล เกี่ยวกับการเปลี่ยนแปลงประเภท
JavaScript รู้ว่าชนิดของ การเปลี่ยนแปลงที่เกิดขึ้นและแบบไดนามิก
>> จึงมีประโยชน์ และข้อเสียนั้น
ขณะที่ทุกคนที่ทำงานใน จาวาสคริปต์ในขณะที่อาจจะรู้
มีบางครั้งที่มี คุณอาจไม่ได้ตั้งใจ
เปลี่ยนชนิดของตัวแปรและ ได้จัดการกับการเปลี่ยนแปลงชนิดที่
แล้ว JavaScript ของคุณ สามารถ crash-- หรือข้อยกเว้น
ถูกโยนเพราะคุณจะมี ประเภทผิดเมื่อคุณคาดหวังประเภทหนึ่ง
เย็น.
>> ดังนั้น scoping-- ซึ่งเป็นเหมือนถ้าเรา จำได้ว่าในช่วงต้นสัปดาห์ที่ผ่านมาแน่นอน
หมายถึงวิธีการที่มองเห็นตัวแปร เป็นและในสิ่งที่พื้นที่ของรหัส
จากข้อมูลทั้งหมดที่มีลักษณะคล้ายกันมาก วิธีการมันก็ดูในซี
ดังนั้นตัวแปรที่ถูกกำหนดขอบเขตโดยทั่วไป ภายในวงเล็บปีกกาภายในฟังก์ชั่น
แล้วยังมี ตัวแปรทั่วโลกขอบเขตที่
are-- ถ้าคุณเขียนตัวแปร ด้านนอกของฟังก์ชั่น
มันจะปรากฏในข้อความทั้งหมด
>> หนึ่งความแตกต่างระหว่าง JavaScript และ C โดยเฉพาะอย่างยิ่ง
คือว่าถ้าคุณประกาศทั่วโลก ตัวแปรที่ใดก็ได้ในแฟ้มข้อความ
ก็สามารถมองเห็นได้ในการทำงานใด ๆ ภายในแฟ้มข้อความที่
นั่นเป็นที่ถูกต้องใช่มั้ย?
>> HUGH Zabriskie: อ๋อ
>> SAM GREEN: ดังนั้นที่ยังเล็ก ๆ น้อย ๆ ขี้ขลาดบิตในการเปรียบเทียบกับซี
ที่เรามักจะต้องมีของเรา นิยามตัวแปรข้างต้นสถานที่
พวกเขาถูกนำมาใช้
นั่นไม่ใช่กฎที่บังคับใช้ อีกต่อไปเช่นนั้นแตกต่างกันเล็กน้อย
และอีกครั้งเพียงเพื่อ reemphasize, เมื่อเทียบกับทั่วโลก variables-- ท้องถิ่น
คล้ายกับซีคุณอาจมี สองตัวแปรที่มีชื่อเดียวกัน
และมีหนึ่งในชื่อของพวกเขาจะเงา โดยตัวแปรท้องถิ่นถ้าหนึ่งของพวกเขา
เป็นระดับโลก
ดังนั้นชนิดที่คล้ายกันของ ปัญหาที่บางส่วนของคุณ
อาจจะวิ่งเข้ามาในบาง ของปัญหาของคุณตั้งค่าเพื่อให้ห่างไกล
เย็นเพื่อให้เป็นตัวแปร
>> การควบคุมการไหลที่มีความหมายเหมือน ถ้า-else-- stuff-- ตรรกะและลูป
เพื่อที่จะเริ่มต้นด้วยการนี​​้เป็นสิ่งที่ถ้า-อื่น งบมีลักษณะเหมือนใน JavaScript
ตำแหน่งของสิ่งต่างๆ บนเส้นนั้นไม่สำคัญ
นี่เป็นเพียงหนึ่งในการประชุม หาวิธีรหัสโครงสร้างพวกเรา
เช่นเดียวกับใน C เรามี "ถ้า" คำสั่งวงเล็บ
นั่นไม่ใช่สิ่งที่ผมหมายถึงการทำ
ฉันทำมันอีกครั้ง.
>> HUGH Zabriskie: พยายามที่จะออก?
SAM สีเขียว: ไม่มีผม แค่พยายามที่จะขยาย
มันไม่สำคัญว่า
>> ดังนั้นเราจึงมี "ถ้า" คำสั่งและ เรามีสภาพภายในของมัน
ที่ประเมินจริงหรือเท็จ และที่กำหนดหรือไม่
เราใส่บล็อกของรหัสที่
และเช่นเดียวกันเรามีอย่างอื่นถ้าและ อื่นเช่นเดียวกับที่เราใช้ในการใน C.
>> นอกจากนี้คุณยังควรจะสะดวกสบายสวย ทันทีทันใดกับลูป,
เพราะพวกเขายังมอง มากเช่นลักษณะ C
แต่คุณจะสังเกตเห็นอีกครั้งว่าเรา มีแทน int initializations,
เรามี var initializations
และผมคิดว่าคุณมี จะต้องระมัดระวังที่จะทำให้
แน่ใจว่าคุณไม่เปลี่ยนค่า ของฉันจาก int ไปสตริง
ตัวอย่างเช่นเพราะเห็นว่าเป็นไปได้ ทำให้เกิดพฤติกรรมที่แปลก ๆ ที่คุณอาจจะไม่
คาดหวัง
แต่ควรดู สวยที่คุ้นเคยเป็นอย่างดี
>> ดังนั้นนี่คือสิ่งที่เริ่มต้นที่จะ ได้รับเล็กน้อยบ้าใน JavaScript
สำหรับคนที่จะไปจาก พื้นหลังของซีมีฟังก์ชั่น
ใน JavaScript และมีวิธีหนึ่งที่ ในการประกาศฟังก์ชั่นที่มีลักษณะ
การจัดเรียงของที่คล้ายกันที่ C และ แล้วมีอีกคนหนึ่งว่า
มีลักษณะที่แตกต่างกันชนิดของ
>> รุ่นแรก ซึ่งเราสามารถดูที่นี่
เป็นชนิดของ C-เหมือนที่ เราบอกว่านี้เป็นฟังก์ชั่น
ให้มันชื่อให้ จำนวนของการขัดแย้งที่
แล้วเนื้อหาของฟังก์ชั่น ไปภายในวงเล็บปีกกาเหล่านั้น
เราจะเห็นตัวอย่างของ ข้อโต้แย้งในเวลาเพียงสอง
>> ในขณะที่ในบรรทัดถัดไปเราจะเห็นโอ้ นี่เป็นตัวแปรที่เรียกว่า "myFunction"
และเราก็เท่ากับนี้ function-- thing-- ทั่วไปที่
ดูเหมือนจะไม่ได้มีอะไรเกิดขึ้น
เหตุผลที่แตกต่างกัน กว่า C คือ JavaScript
เป็นสิ่งที่เรียกว่าเป็นภาษาที่ทำงาน หรือมีองค์ประกอบการทำงานซึ่งหมายความว่า
ที่ทำหน้าที่เป็นจริงค่า
และนั่นหมายความว่าเราสามารถตั้งค่า ตัวแปรเท่ากับฟังก์ชั่น
และจากนั้นย้ายที่ทำงาน รอบผ่านมันเป็นอาร์กิวเมนต์
ทำทุกสิ่ง เช่นเดียวกับที่มีฟังก์ชั่น
>> สิ่งหนึ่งที่อื่น ๆ ที่จะ note-- ฟังก์ชั่นจะเขียน
มีจำนวนที่แน่นอนของการขัดแย้ง
เราจะเห็นตัวอย่างของฟังก์ชัน กับข้อโต้แย้งในสไลด์ถัดไป
แต่จะไม่ JavaScript เสียงโห่ร้องที่คุณถ้าคุณลอง
ที่จะใช้ฟังก์ชั่นที่ จำนวนที่ไม่ถูกต้องของการขัดแย้ง
มันก็จะทำให้ดีที่สุดที่จะทำให้ ทำหมายความว่าถ้าคุณผ่าน
คุณเรียกฟังก์ชั่นที่คาดว่า ทะเลาะกับอาร์กิวเมนต์ทั้งหมดที่
ที่จะเกิดขึ้นมันจะทำดีที่สุด และพยายามรันโค้ดที่
และหากในที่สุดมันก็จะทำงาน เป็นข้อยกเว้นหรือข้อผิดพลาด
มันจะโยนข้อยกเว้นและเพียงแค่ให้ going-- ซึ่งเป็นเพียงหนึ่งในวิธีการ
ที่ทำงาน JavaScript
ใช่.
>> ผู้ชม: เกิดอะไรขึ้นถ้า มีข้อโต้แย้งมากเกินไป?
SAM GREEN: ดังนั้น คำถามคือสิ่งที่เกิดขึ้น
ถ้ามีข้อโต้แย้งมากเกินไป?
และคำตอบก็คือว่า จาวาสคริปต์จะเพียง
ไม่สนใจคนที่มี หลังจากที่คาดว่า
มันจะพยายามที่จะดำเนินการทำงาน เรียกว่าถ้ามันเป็นเพียงแค่สองคนแรก
ขวา?
>> HUGH Zabriskie: ใช่ใช่
ในทำนองเดียวกันถ้ามี ข้อโต้แย้งน้อยเกินไป
มันเพียงแค่ชนิดของให้โมฆะทั้งหมด ข้อโต้แย้งที่มันไม่ได้มีค่าใด ๆ
สำหรับ.
>> SAM GREEN: ซึ่งสามารถ จริงจะมีประโยชน์ถ้าคุณ
ต้องการที่จะเขียนฟังก์ชั่นที่ ใช้เวลาการขัดแย้งจำนวนตัวแปร
คุณสามารถตั้งค่าเริ่มต้นใน ความหมายของฟังก์ชั่นที่
และมันสามารถปฏิเสธความจริง การป้อนข้อมูลที่ไม่ได้มี
ดังนั้นผมจึงต้องการที่จะพูดคุยนิด ๆ หน่อย ๆ เพิ่มเติมเกี่ยวกับกระสุนที่ผ่านมานี้
จุดซึ่งเป็นฟังก์ชั่นนี้เป็นค่า
นี่คือตัวอย่างที่เป็น นิด ๆ หน่อย ๆ เหลือเชื่อ
ถ้าคุณเพิ่งอ่านมันและไม่คิดว่า เกี่ยวกับสิ่งที่เกิดขึ้นเป็นครั้งที่สอง
ดังนั้นให้ดูเพียง บรรทัดแรกที่นี่
เรามีตัวแปรนี้ f1 ที่เราพูด ฟังก์ชั่นที่ไม่สิ่งนี้
และเนื้อหาของฟังก์ชัน จะ console.log (สวัสดี)
คุณสามารถคิดว่า console.log เป็น JavaScript เทียบเท่า printf
ดังนั้นสิ่งที่จะเกิดขึ้นคือถ้าเรา เรียกใช้รหัสนี้ในเบราว์เซอร์ของเรา
มันจะพิมพ์ออกมาสตริง
ฉันสามารถแสดงให้เห็นว่า
ผู้ชม: โดยการเข้าสู่ระบบ แต่ไม่ว่า หมายถึงการที่มันถูกบันทึกไว้ที่ใดที่หนึ่ง?
SAM GREEN: ใช่
ดังนั้นผมจะแสดงสิ่งที่จะเกิดขึ้น
ดังนั้นคำถามคือสิ่งที่ไม่เข้าสู่ระบบหมายถึงอะไร?
>> HUGH Zabriskie: ดังนั้น console.log เป็นเหมือน printf สำหรับซี
SAM GREEN: ดังนั้น console.log เป็นเหมือน printf,
ดังนั้นถ้าฉันมี console.log นี้ ('สวัสดี') และที่ผมเรียกว่าสตริง "สวัสดี"
ได้รับการพิมพ์ออกมาไปยังคอนโซล
นี่คือคอนโซล
ก็เช่นเดียวกับ printf ที่ จะพิมพ์ออกมาตรฐาน
และเราจะเห็นในนาที แต่นี้เป็นจริง
หมายถึงวัตถุที่คอนโซล และเรียกวิธีการบนวัตถุที่
นั่นจะทำให้รู้สึกมากขึ้น ในนาทีเมื่อเรา
จะได้รับการพูดคุยเกี่ยวกับ วัตถุใน JavaScript,
แต่ผมคิดว่าผมก็จะพูดถึงว่า
HUGH Zabriskie: เรา ที่ใช้ในการใน C, right--
เรามักจะเขียนโปรแกรมใหญ่ ในหลักที่จะทำอะไร
แต่สิ่งที่เย็นใน JavaScript คุณ มีชนิดของล่ามที่
วิ่งในเวลาจริงจึง ใช้เวลาเพียงละบรรทัด
มันก็สามารถแปลว่าในจุดที่
และติดตามการทำงานของ สิ่งที่ได้ทำงานก่อน
จึงเป็นเครื่องมือที่มีประโยชน์สวย ใช้ console.log ห​​รือคอนโซล
โดยทั่วไปเพียงเล่น รอบด้วย JavaScript
>> SAM GREEN: ดังนั้นจะกลับไปนี้ example-- บรรทัดที่สองของรหัส
ที่นี่สวยเหลือเชื่อในหัวของฉัน
ครั้งแรกที่ผมอ่านบทความนี้ มันเป็นเหมือนสิ่งที่เกิดขึ้น?
ดังนั้นสิ่งที่เกิดขึ้นคือนี้ ประกาศฟังก์ชั่นกล่าวว่า
ฉันมีฟังก์ชั่นที่เรียกว่า f2 ที่คาดหวังว่าหนึ่งในข้อโต้แย้ง, F,
และจากนั้นก็เรียกว่า ฟังก์ชั่นฉซึ่ง
ถูกส่งผ่านไปมันเป็นอาร์กิวเมนต์ มีข้อโต้แย้งไม่ตัวเอง
ดังนั้นที่อาจได้รับความสับสน
ถ้าเราเข้าใจว่านี่เป็นเวลา f1 f2 เป็นอาร์กิวเมนต์แล้วภายในของ f2,
ฉรับ called-- ซึ่งหมายถึง ที่บรรทัดของรหัสนี้
หลังจากที่ทั้งสองเส้น รหัสผลในการ "สวัสดี"
ถูกพิมพ์ไปยังคอนโซล
>> ความจริงที่ว่าเราสามารถผ่าน ฟังก์ชั่นรอบเป็นค่า
สิ้นสุดขึ้นเป็นหนึ่งในที่สุด คุณลักษณะที่มีประสิทธิภาพของ JavaScript
เป็นภาษาการเขียนโปรแกรม
นอกทั้งหมดของ สิ่งที่น่ากลัวก็สามารถทำ
เช่นเดียวกับคุณลักษณะของการเป็น ภาษาในแง่ของวิธีการ
ว่ามันทำให้สิ่งที่ง่าย ในการเขียนโปรแกรมและช่วยให้
สำหรับสิ่งที่ไม่ได้โดยเฉพาะอย่างยิ่ง ดีเหมาะไปยังเว็บ
โปรแกรมการทำงานและการทำงาน ด้านการเขียนโปรแกรมจาวาสคริปต์
เป็นหนึ่งในที่สุด แนวความคิดที่มีประสิทธิภาพที่
ที่มีอยู่ใน JavaScript-- ถ้าคุณถามฉัน
เย็น.
>> ดังนั้นสิ่งต่อไปที่
นอกจากจะเป็นการทำงาน นอกจากนี้ยังมีองค์ประกอบของ JavaScript
ที่มีเชิงวัตถุ ซึ่งเป็นหนึ่งในมาก
คำฉวัดเฉวียนเป็นที่นิยมในสาขาวิชาวิทยาการคอมพิวเตอร์
การเขียนโปรแกรมเชิงวัตถุ เป็นสิ่งที่เป็นที่นิยมมาก
JavaScript มีรุ่นนั้น ที่ผมเชื่อว่าทุกคนนอกจากนี้ยังมีค่า
วัตถุซึ่งหมายความว่าทุกวัตถ​​ุ ล้อมด้วยกันจำนวนของค่าบางอย่าง
ดังนั้นสำหรับค่าที่ง่ายเช่น จำนวนเต็มเช่น varX เท่ากับ 5
วัตถุที่เพิ่งตัดที่ค่าหนึ่ง
>> แต่เรายังสามารถจินตนาการสถานการณ์ where-- เราสามารถคิดสถานการณ์ใน C
ที่เราอยากจะทำ สิ่งที่มี structs,
ยกตัวอย่างเช่นที่ล้อมหลาย ค่าเข้าด้วยกันและทำให้
เป็นเรื่องง่ายที่จะผ่านสิ่งรอบ ๆ
นั่นคือเมื่อวัตถุใน JavaScript
>> มันเป็นสิ่งสำคัญที่ต้องจำ เมื่อฉันบอกว่าห่อวัตถุ
จำนวนค่าบางอย่างร่วมกัน ฟังก์ชั่นนี้ยังมี
ค่าซึ่งหมายความว่าฟังก์ชั่นที่สามารถ ยังอยู่ภายในของวัตถุ JavaScript
และเหตุผลที่สำคัญ คือว่าในขณะที่เรามักจะ
คิดว่าวิธีการที่เรียกร้อง บนวัตถุที่เป็น
ของคำที่ได้รับความนิยมจากคนอื่น ๆ ภาษาเชิงวัตถุที่เป็นที่นิยม
หนึ่งในความแตกต่างที่นี่คือ ทุกสิ่งที่เป็นวิธีการใน JavaScript
เป็นค่าที่เก็บไว้ภายในของวัตถุ ที่ดำเนินการบางอย่างอาจ action--
โดยใช้ค่าอื่น ๆ ที่อยู่ภายใน ของวัตถุที่ แต่ไม่จำเป็นต้อง
ดังนั้นคุณสามารถจินตนาการสถานการณ์ที่ผม เดาในนิด ๆ หน่อย ๆ วิธีที่บ้า
ที่คุณเรียกว่าวิธีการอย่างใดอย่างหนึ่ง วัตถุที่วัตถุอื่นเช่น
ดังนั้นจึงเป็นนิด ๆ หน่อย ๆ ขี้ขลาดในทางที่
>> และคุณยังสามารถเปลี่ยนวิธีการ ที่เกี่ยวข้องกับวัตถุ
โดยการกำหนดวิธีการที่ ฟังก์ชั่นใหม่ที่ยังเป็น
สวยที่แตกต่างจากคนอื่น ๆ ภาษาเชิงวัตถุที่
เมื่อเราประกาศวัตถุ และยกตัวอย่างมัน
เราไม่สามารถเปลี่ยนวิธีการที่มี เกี่ยวข้องกับวัตถุนั้นอีกต่อไป
เพื่อให้เป็นที่แตกต่างกันสวย
เย็น.
>> ดังนั้นนี่คือตัวอย่างแรก ของวัตถุในการดำเนินการ
นี่คือสิ่งที่เรียกว่า วัตถุทั่วไปซึ่ง
หมายความว่ามันไม่ได้มี ชื่อโดยเฉพาะอย่างยิ่งไม่ได้เรียน
มันเป็นเพียงแค่การตัดบางส่วนของค่า
และวิธีการที่มีลักษณะเป็นเรามี คู่นี้ด้านนอกของหยิกวงเล็บที่นี่
ที่บ่งบอกถึงการ JavaScript และกล่าวว่านี้เป็นวัตถุ
ค่าภายในของมัน เป็นค่าแต่ละภายใน
ของวัตถุที่ควร จะห่อด้วยกัน
และภายในของวัตถุนั้น จากนั้นเราจะมีคู่ค่าที่สำคัญ
ที่สำคัญหมายถึงชื่อ ของมูลค่าภายในของวัตถุ
และ side-- อื่น ๆ ตรงข้ามลำไส้ใหญ่ here--
เป็นค่าที่เกิดขึ้นจริง ที่ควรจะเก็บไว้
>> ดังนั้นคุณจะเห็นว่าที่นี่เรามี ที่สำคัญที่เรียกว่า fn มีมูลค่า sam,
ตามด้วยเครื่องหมายจุลภาค บอกไปยังรายการถัดไป
แล้วที่สำคัญที่เรียกว่า LN, ด้วยค่าของสีเขียว
ตามด้วยเครื่องหมายจุลภาค ตามมาด้วย "พิมพ์"
ซึ่งจะมีค่าฟังก์ชั่น ที่จะไปทำบรรทัดของรหัสนี้
ลองย้อนกลับไปและ แกะสิ่งที่เกิดขึ้นที่นี่
ดังนั้นนี่คือนิด ๆ หน่อย ๆ ที่ซับซ้อน และเราได้เห็นอะไรใหม่ ๆ
สำหรับครั้งแรก.
ว่า "คำนี้" เป็นสิ่งใหม่ เราเห็นนี่และสิ่งนี้จะ
คือหมายถึงปัจจุบัน วัตถุที่อยู่ในขอบเขตที่เหมาะสม?
ดังนั้นเมื่อเรากล่าวนี้ ชี้ให้ตลอดทางกลับ
นี้ object-- ทั้งหมด เมื่อเราทำ this.fn,
เรากำลังจะไปตลอดทางกลับ วัตถุนี้ไปที่ค่าศุกร์
และได้รับ sam ดึงมันไปตลอดทาง กลับมาติดไว้ที่นี่แล้วไป
>> ผู้ชม: ดังนั้นด้วยการดึงเป็น ที่ทำเพราะของพารามิเตอร์
ความหมาย?
SAM GREEN: ดังนั้นคำถามก็คือ ดึงทำเพราะของพารามิเตอร์
ความหมาย?
ใช่อย่างแน่นอน
ที่จะเกิดขึ้นที่นี่มีอะไร จุดนี้กล่าวกับ JavaScript,
ตกลงฉันได้รับค่าบางอย่าง จากวัตถ​​ุจากตัวเองนี้
และจากนั้นก็จะมองหารายการ เรียกศุกร์และหากพบมัน
มันจะกลับมาที่ value-- ดังนั้นก็ sam
แต่ฉันยังสามารถพิมพ์ บางสิ่งบางอย่างที่ไม่ได้กำหนดไว้ที่นี่
แล้วมันจะเป็นเพียง กลับ undefined-- ที่
เป็นสิ่งที่จาวาสคริปต์ที่สามารถ ทำซึ่งจะมีผลประโยชน์
แต่ก็ also-- ถ้าคุณทำผิดพลาดที่ มันสามารถทำให้เกิดข้อผิดพลาดที่แปลก
ดังนั้นมันก็จะพยายามที่จะหา สิ่งที่คุณบอกว่าจะหา
และก็ไม่ได้ไป บ่นถ้าไม่ได้พบว่ามัน
มันก็จะบอกว่าฉันไม่ได้ พบมันแล้วไป
ดังนั้นมันจะไม่ได้กำหนด, บวกว่างเปล่าบวกนามสกุล
ใช่.
และจากนั้นเราจะเห็นว่าถ้าเรา ก็จะลงไปและ access--
และเราเรียก tf.print () ที่มีวงเล็บ
มันจะเรียกว่าพิมพ์ ฟังก์ชั่นที่มีการขัดแย้งไม่มีใช่มั้ย?
แต่ถ้าเราเพียงแค่กล่าวว่า tf.print () อัฒภาคโดยไม่ต้องวงเล็บ,
สิ่งที่จะต้องทำคือดึง ฟังก์ชั่นออกมาจากมูลค่าที่
แต่ไม่ได้เรียกว่ามันจริง
เย็น.
HUGH Zabriskie: ควร เราจะทำให้วัตถุ?
SAM GREEN: แน่นอนว่าเรามาทำอย่างนั้น
ดังนั้นผมจึงสามารถย้ายนี้ เช่นคอนโซล
เราสามารถจินตนาการได้ว่าผมมีวัตถุ
ดังนั้นนี่คือวัตถุที่เรียบง่าย
นี้เป็นวัตถุที่มีสอง ค่ากับสองปุ่มสองค่าคีย์
คู่
ดังนั้นผมก็จะสามารถเข้าถึงค่าที่เก็บไว้ ภายในของวัตถุนี้โดยการทำ x.x1,
ตัวอย่างเช่นและฉันได้รับที่ 1 กลับไป
ในทำนองเดียวกัน x.x2 รับค่าที่กลับมา
>> และตอนนี้สิ่งที่เจ๋งจริงๆคือผมสามารถ จริงเพิ่มสิ่งที่วัตถุนี้
หลังจากที่ผมได้สร้างมันขึ้นมา
ดังนั้นคุณสามารถจินตนาการขอ ว่าฉันมีฟังก์ชั่น
>> HUGH Zabriskie: คุณ ต้องทำ Shift-Enter
>> SAM GREEN: โอ้ที่น่ารำคาญ
อะไรที่มันไม่ชอบ?
โอ้
ไปเลย.
เย็น.
>> ดังนั้นผมจึงได้สร้างขึ้น ฟังก์ชั่นนี้ฉนั้น
เป็นไปที่จะไปในปัจจุบัน วัตถุและพิมพ์ this.x1
ดังนั้นถ้าฉันเพียงโทรฉโดย ตัวเองไม่มีอะไรที่เกิดขึ้น
จะเกิดขึ้นที่เหมาะสมเพราะมี x1 ไม่มี สนามในวัตถุมันหมายถึง
แต่ถ้าผมพูด x.f = ฉแล้วฉัน เรียก x.f () ฉันจะได้รับกลับมา 1
ฟังก์ชั่นฉนั่นคือตอนนี้ เกี่ยวข้องกับวัตถุ x,
ซึ่งมีที่สำคัญที่เรียกว่า x1 ที่เกี่ยวข้องกับค่าที่ 1,
ดังนั้นเมื่อเราเรียก this.x1 ก็ จะพบสิ่งที่กำลังมองหา
และสามารถที่จะพิมพ์ค่าออกมา
เพื่อให้เป็นเพียงตัวอย่างหนึ่ง ชนิดของสิ่งที่บ้า
คุณสามารถทำกับวัตถุใน JavaScript
>> ดังนั้นรุ่นที่เป็น รุ่นทั่วไปหมาย
ที่เราได้สร้างขึ้นโดยใช้วัตถุนี้ วงเล็บสัญกรณ์รั้ง notation--,
rather-- และที่ มีประโยชน์ถ้าเราเพียงแค่ต้องการ
หนึ่งในตัวอย่างของวัตถุโดยเฉพาะอย่างยิ่ง แต่ สิ่งที่ถ้าเราต้องการที่จะมีมากกว่าหนึ่ง
ของชนิดเดียวกันได้หรือไม่
และคำตอบที่ว่า คำถามคือมีสิ่งที่
ที่เรียกว่าการเรียนใน JavaScript ได้เป็นอย่างดี
เราสามารถสร้างฟังก์ชั่นที่ ไม่เรียงลำดับของการเริ่มต้นบางอย่าง
สำหรับวัตถุต่างประเทศ และเราจะบอกว่าเหมือน
class-- ของฉันดังนั้นชื่อ ของ object-- นำมาใช้ใหม่
เท่ากับฟังก์ชั่นที่กำหนดขึ้น
ดังนั้นสิ่งนี้จะเทียบเท่า ที่จะมีการสร้างวัตถุที่
จะเป็นเพียงต้องการ วงเล็บปีกกา, STR ลำไส้ใหญ่
นี้เป็นสตริง อัฒภาครั้งหยิก
ที่จะเป็นทั่วไป วัตถุที่เราเริ่มต้น,
กับหนึ่งความแตกต่างการที่ สายต่อไปที่เราสร้างต้นแบบที่
หมายความว่ามันเริ่มต้นที่สำคัญที่ เราเพิ่มไปยังวัตถุของเราที่
มีค่าอยู่ที่นี่
หมายความว่าเมื่อฉันจะสร้างใหม่ ตัวอย่างของวัตถุ MyClass นี้
ก็จะได้สร้างขึ้นก่อนภายในของ ค่าที่เรียกว่าเอสทีและความคุ้มค่าอีก
เรียกว่า myPrint ซึ่งเป็น จะเป็นฟังก์ชั่น
ที่น่ากลัว
>> ที่ดี
ดังนั้นสิ่งสุดท้ายที่จะ พูดเกี่ยวกับ JavaScript
คือว่ามันมีประโยชน์จริงๆสำหรับสิ่งที่ จะเรียกว่าการดำเนินงานที่ไม่ตรงกัน
หมายถึงการไม่ตรงกันคือการที่เรา สามารถรอสำหรับการดำเนินการบางอย่าง
ให้เสร็จสมบูรณ์ก่อนที่เราจะไป แต่ย้ายไปในขณะที่เรารอ
แล้วมีบางสิ่งบางอย่างเกิดขึ้นในภายหลัง
และสิ่งที่ฉันหมายความโดยที่คุณ สามารถจินตนาการสถานการณ์ที่
คุณส่งการร้องขอไปยัง บางเว็บเซิร์ฟเวอร์ที่ใดที่หนึ่ง
และมันจะส่งคุณกลับ บางก้อนใหญ่ของข้อมูลใช่มั้ย?
และผู้ใช้ของคุณสามารถรอใน ขณะเดียวกันการที่จะเกิดขึ้น
และไม่มีอะไรที่จะเป็น ที่เกิดขึ้นในช่วงเวลานั้น
แต่นั่นไม่ใช่การออกแบบที่ดีใช่มั้ย?
คุณไม่ต้องการหน้าเว็บที่จะแช่แข็ง
เกิดอะไรขึ้นถ้าผู้ใช้ต้องการ คลิกที่เมนูแบบเลื่อนลงหรือไม่?
มันไม่ได้เป็นรูปแบบการออกแบบที่ดี
แต่โดยทั่วไปสิ่งที่ จาวาสคริปต์ไม่ได้รับการกล่าวว่า
ตกลงทำดำเนินการนี​​้ถ่ายทอดสด
ดังนั้นเหมือนรออยู่ในพื้นหลัง และจากนั้นเมื่อการดำเนินการเสร็จแล้ว
โทรเรียกกลับ function-- เรียกใช้ฟังก์ชันบางอย่าง
ไม่บาง action-- เพื่อส่งสัญญาณว่า การดำเนินงานของเรากำลังรอที่จะจบ
จบลงแล้ว.
และเหตุผลที่มีประสิทธิภาพสุดคือ เราสามารถทำบางสิ่งบางอย่างผ่านอาร์กิวเมนต์
ทำอะไรสักอย่างแล้วรอ สิ่งที่เกิดขึ้น
จากนั้นเมื่อสิ่งที่ เสร็จเราสามารถเรียกโทรกลับ
นั่นเป็นประโยชน์จริงๆเพราะมันช่วยให้ เราทำสิ่งที่มีเว็บ Audio API,
ตัวอย่างเช่นการโหลด ไฟล์เสียงจากเซิร์ฟเวอร์ระยะไกล
โดยไม่ต้องรอให้ ไฟล์เสียงทั้งหมดจะได้รับการโหลด
ซึ่งจะเป็นจริงๆ ที่ไม่ดีสำหรับประสบการณ์การใช้งาน
เย็น.
>> คู่สุดท้ายข้อสังเกตเกี่ยวกับ การแก้จุดบกพร่องตั้งแต่นี้
เป็นสิ่งที่คุณจะต้องทำ เป็นส่วนหนึ่งของโครงการของคุณรับประกัน
ที่ผมกล่าวถึงคอนโซล JavaScript
มันเป็นคุณสมบัติที่มีประโยชน์สุด เบราว์เซอร์ที่ทันสมัย
และเราจริงๆแนะนำให้คุณที่จะได้รับ สะดวกสบายใช้คอนโซลของคุณ
ถ้าคุณต้องการที่จะได้รับสิ่งที่ดีที่จาวาสคริปต์
มันเป็นเรื่องที่มีประโยชน์สำหรับซุปเปอร์ การแก้จุดบกพร่อง แต่ก็ยัง
มีประโยชน์มากสำหรับการหา วิธีการใช้ API
จะช่วยให้การจริงๆ การทดลองง่าย
โดยไม่ต้องพิมพ์บาง รหัสแล้วรวบรวมมัน
คุณไม่ต้องทำตามขั้นตอนเหล่านั้นทั้งหมด
คุณก็สามารถเขียน รหัสบางอย่างในสาย
แล้วได้รับการตอบรับทันที หรือไม่บรรทัดของรหัสที่
worked-- ที่มีประโยชน์มาก
>> และยังเป็นเพียงหนึ่ง note-- ทางเทคนิค คอนโซล JavaScript เป็นตัวอย่าง
ของ REPL-- เพื่อให้เป็น R-E-P-L, REPL, ซึ่งหมายถึงการอ่านประเมินผล
วนรอบที่พิมพ์
คุณกำลังจะพิมพ์สิ่งบางอย่าง ในก็จะอ่านสิ่งที่คุณพิมพ์ใน
มันจะประเมินมันและมันจะพิมพ์ การส่งออกและจากนั้นก็จะเริ่มต้นอีกครั้ง
ที่ช่วยให้คุณได้อย่างรวดเร็วไปใน วงการวนซึ่งเป็นเย็นจริงๆ
>> ผมคิดว่าที่ผ่านมาจริง note-- นี้ เป็นบันทึกล่าสุดที่เกิดขึ้นจริงใช่
เราทำจริงใช้ JavaScript ได้อย่างไร
ครั้งแรกดังนั้นเราสามารถนำเข้า โดยใช้แท็กสคริปต์
ที่ด้านบนหรือด้านล่างของ HTM​​L มี file-- ที่ใดก็ได้ภายในของไฟล์ HTML,
จริงๆ.
และภายในแท็กสคริปต์ที่มี สองวิธีย่อยของการนำเข้า JavaScript
ที่แรกก็คือโดยมี ไฟล์จาวาสคริปต์ที่แยกต่างหาก
ที่เรานำเข้าอย่างครบถ้วนหรือ โดยมีพื้นที่รหัสเช่นสคริปต์
ที่จะเริ่มต้นแล้ว สคริปต์เครื่องหมายถึงจุดสิ้นสุด
แล้วเราเพียงแค่เขียน JavaScript ภายในไฟล์ HTML
เหล่านี้เป็นสองวิธี
คุณไม่สามารถมีได้ภายในของ HTM​​L
ผู้ชม: เป็นหนึ่งในดีกว่าที่อื่นหรือไม่
SAM GREEN: คำถามคือ เป็นหนึ่งในที่ดีขึ้นกว่าที่อื่น ๆ
ดังนั้นใช่เป็นวิธีที่รูปแบบการเข้ารหัส และมันก็เหมือนการปฏิบัติการออกแบบ
มีสองเหตุผลคือ ทำไมมันอาจจะดีกว่า
ที่แรกก็คือมันทำให้รหัสของคุณ จำนวนมากที่สามารถอ่านได้มากขึ้นถ้าทั้งหมดของ HTM​​L ของคุณ
อยู่ในสถานที่หนึ่งทุก CSS ของคุณอยู่ใน สถานที่อื่นทั้งหมดของ JavaScript ของคุณ
อยู่ในสถานที่ที่สาม
ขวา?
ผมคิดว่าเราควรจะได้พูดคุยกันแล้ว เกี่ยวกับเรื่องนี้ใน sections-- CSS-- สิ่งที่ชอบ
ที่ is-- และมันจะไป มักจะอยู่ในแฟ้มอื่น
ดังนั้นชนิดที่คล้ายกันของแนวคิดที่นี่
นอกจากนี้คุณยังสามารถจินตนาการว่า JavaScript จะนำกลับมาใช้มากกว่าหนึ่ง
เพจ HTML หรือบางทีอาจจะเป็น หน้าเว็บ HTML หลายที่ดี
และมีที่ JavaScript refactored เป็นหนึ่ง
ไฟล์ที่คุณสามารถนำเข้า เป็นมากกว่าสถานที่แห่งหนึ่ง
ช่วยให้รหัสที่จะ วิธีการบำรุงรักษามากขึ้น
คุณสามารถจินตนาการการทำอย่างใดอย่างหนึ่ง เปลี่ยนเป็น JavaScript
และมีการเปลี่ยน ใน 100 ไฟล์ที่แตกต่างกัน
และแทนที่จะเราก็สามารถเปลี่ยนได้ ในหนึ่งซึ่งเป็นวิธีที่มีประสิทธิภาพมากขึ้น
ผมตอบคำถามของคุณ?
เย็น.
>> นอกจากนี้เรายังสามารถพิมพ์ลงในคอนโซล ที่เราได้กล่าวมาก่อน
และอีกครั้งหนึ่งที่ผ่านมา note-- เสียงเว็บที่ถูกสร้างขึ้นใน
คุณไม่จำเป็นต้องโหลดอะไร
เย็น.
มีคำถามใด ๆ ที่คุณมี คำถามใด ๆ เพิ่มเติมเกี่ยวกับ JavaScript,
ก่อนที่เราจะเดินหน้าต่อไป?
>> ผู้ชม: [ไม่ได้ยิน]
SAM GREEN: สิทธิทั้งหมดเย็น
ดังนั้นตอนนี้เขาจะพูดคุยเกี่ยวกับเอพีไอ
>> HUGH Zabriskie: เย็น
ขอบคุณแซม
>> SAM GREEN: Sure
HUGH Zabriskie: น่ากลัวดังนั้น เราจะย้ายไปจาก JavaScript
ดังนั้นเราจึงได้พูดคุยเกี่ยวกับบางส่วนของ สาระสำคัญของ JavaScript ที่
และผู้ที่มีตัวแปรที่ฟังก์ชั่น วัตถุที่ทำหน้าที่เป็นตัวแปร
โหลดไม่ตรงกัน
เหล่านี้เป็นสิ่งทั้งหมดที่คุณจะ เห็นว่าคุณใช้เว็บเสียง
ดังนั้นเรากำลังจะพูดคุย เกี่ยวกับเรื่องนี้เป็นครั้งแรกในระดับสูง
>> มันเป็น API จึงเป็นสิ่งที่ ที่สร้างขึ้นในขณะที่แซมกล่าวว่า
ลงใน JavaScript ที่คุณใช้ในคอนโซล
และมันก็เป็นจริงเช่นเดียวกับรหัส c ++ ที่สร้างขึ้นจริงๆเป็นโครเมี่ยม
และ Firefox และทั้งหมดของเบราว์เซอร์เหล่านี้
ดังนั้นความคิดหลักกับ Web เสียงคือการที่คุณมี
ชนิดของท่อเสียงนี้ใช่มั้ย?
ดังนั้นข้อมูลเสียงของคุณ มาในในบางรูปแบบ
>> มีสามชนิดของ forms-- หลัก คุณมี oscillator, ที่
สร้างคลื่นไซน์คลื่นโคไซน์ เรากำลังจะไปดูว่าที่ทำงาน
อีกคนหนึ่งที่พบบ่อยมาก ของหลักสูตรคือ MP3
ดังนั้นบางทีคุณอาจจะเริ่มต้นด้วย เพลงและจากนั้นคุณ
ต้องการที่จะทำบางกรอง ที่เอาท์พุท
that-- ที่อาจจะเป็นแหล่งที่เป็นไปได้
แล้วเย็นจริงๆ หนึ่งคือไมโครโฟน
ดังนั้นคุณจึงสามารถใช้บางมาก โทรพื้นฐานใน JavaScript
ที่จะได้รับการเข้าถึง ไมโครโฟน, และอื่น ๆ ถ้าคุณ
ต้องการที่จะทำให้การตรวจสอบ เช่นเครื่องตรวจจับสนาม,
ยกตัวอย่างเช่นที่เกิดใน เสียงและตัวเลขของคุณออก
pitch-- วิธีที่ง่ายมากที่
คุณสามารถเพียงแค่ชนิดของอ่านมัน ในการคิดออกความถี่
แล้วออกจำนวน
ดังนั้นเราจะเห็นว่าที่ทำงานได้เป็นอย่างดี
>> ปลายทางคือโดยทั่วไป ที่ข้อมูลเสียงเอาท์พุท
ดังนั้นโดยทั่วไปว่าเป็นเหมือน ลำโพงแล็ปท็อป
ตัวเลือกอื่น ๆ เป็นเหมือน ScriptProcessorNode--
เราจะให้โหนดใน second-- แต่โดยทั่วไป
ทั้งที่คุณกำลังวางเสียงออก ผ่านเครื่องคอมพิวเตอร์ของคุณผ่านทางลำโพง
หรือคุณชนิดของการบันทึกมันดังนั้น คุณเก็บเป็นข้อมูลเสียง
ดังนั้นบางทีถ้ามีคนสร้าง เพลงใน app ของคุณแล้ว
คุณต้องการที่จะบันทึกว่าและอาจจะชอบ ส่งออกไปยัง SoundCloud สำหรับ example--
ที่จะเป็นวิธีหนึ่งที่จะทำเช่นนั้น
ทุกสิ่งที่สนุก ซึ่งเราจะพูดคุยเกี่ยวกับ
ที่เกิดขึ้นระหว่างทั้งสองจุด ที่เราโหลดในเพลง
แล้วออกมัน
>> ดังนั้นฉันจะพูดคุยเกี่ยวกับห้า ขั้นตอนของการผลิตเสียงในครั้งที่สอง
เรามีสิ่งที่เรียกว่า AudioContext ซึ่ง
คือกระดาษห่อเล็ก ๆ น้อย ๆ ที่เราเห็นที่นี่
โดยทั่วไปสิ่งที่ AudioContext is-- ถ้าเรา ไปที่คอนโซล JavaScript ในขณะนี้
เราสามารถสร้างหนึ่งในขณะนี้
เพียงตัวอย่างของ REPL ขวาแล้ว?
เรากำลังอ่าน ประเมินผลและการพิมพ์
>> AudioContext เป็นรัฐทั่วโลก
มัน struct ก็วัตถุ ที่นี่และจะเก็บข้อมูล
เกี่ยวกับสิ่งที่เกิดขึ้น บนหน้าจอที่เกี่ยวข้องกับเสียง
ตัวอย่างหนึ่งคือเวลาปัจจุบัน
นี้จะบอกคุณจำนวน วินาทีอย่างแม่นยำ
ตั้งแต่หน้าเว็บที่โหลด
ดังนั้นนี้เป็นประโยชน์จริงๆ สถานที่เล็ก ๆ น้อย ๆ ที่คุณสามารถใช้
มันอ่านเท่านั้นหากต้องการดูผมคิดว่าจริง คุณสามารถลองที่จะตั้งค่า
มันจะบอกคุณตั้งมัน แล้วถ้าคุณพิมพ์
again-- มันไม่ได้ทำงานจริงค่อนข้าง
ดังนั้นมีการอ่านอย่างเดียว คุณสมบัติใน JavaScript
นี้จริงๆเป็นประโยชน์ในกรณีที่ คุณกำลังชนิดของซิงค์
จำนวนมากที่แตกต่างกัน ข้อมูลเมื่อคุณอยู่
ชนิดของการเล่นเสียงที่แตกต่าง
>> อีกหนึ่งที่มีประโยชน์จริงๆ เป็นปลายทางบริบท
แน่นอนถ้าคุณสนใจจะ พยายามที่นี้ที่คอนโซลด้านขวาของคุณเอง
ตอนนี้
ดังนั้นนี่คือ AudioDestinationNode
โดยทั่วไปสิ่งที่กล่าวนี้คือ ที่มีการส่งออกไป?
จึงมีสองตัวเลือกจริงที่นี่
มักจะเริ่มต้น เป็นเพียงลำโพงของคุณ
ดังนั้น AudioDestinationNode พื้นเพียงกล่าวว่า
มีศูนย์เอาท์พุทเสียงที่มี มาส่งไปยังลำโพง
ดังนั้นโดยทั่วไปคุณทำไม่ได้ ต้องเล่นกับที่
หากคุณกำลังสนใจในการใช้จริง ScriptProcessorNode สำหรับการบันทึก
แน่นอนยิงฉัน อีเมลต่อมาเนื่องจากว่าเป็น
เล็ก ๆ น้อย ๆ ที่ซับซ้อนมากขึ้น
แต่โดยทั่วไปคุณเพียงแค่ชนิด การแสดงผลของเสียงในบางรูปแบบ
เย็นดังนั้นเราจะกระโดดกลับมาที่นี่
ผู้ชม: ฉันขอโทษ
HUGH Zabriskie: ใช่
ผู้ชม: ฉันรู้ว่าคุณกล่าวว่าที่จะพูดคุย กับคุณในภายหลังเกี่ยวกับการบันทึก
คุณสามารถเชื่อมต่อกับเครื่องมือ Pro?
>> HUGH Zabriskie: ด้วยเครื่องมือ Pro?
มาดูกัน.
ฉันไม่คิดอย่างนั้น
ดังนั้นจะระหว่างลูกค้า ซึ่งเป็น JavaScript
คอนโซลและที่แท้จริงของคุณ คอมพิวเตอร์โดยทั่วไป
บางสิ่งบางอย่างที่ชนิด การปิดวงเงินถ้าคุณ
จะชนิดโดยธรรมชาติของ the-- มันเป็นชนิดของสิ่งที่การออกแบบ
แต่คุณพยายามที่จะให้เบราว์เซอร์ที่แยกต่างหาก ที่เกิดขึ้นจริงจากเครื่องคอมพิวเตอร์ของผู้ใช้
โดยทั่วไปสิ่งเดียวที่คุณจะสามารถ การเข้าถึงเป็นไมโครโฟนหรือกล้อง
คุณไม่สามารถที่จะฉัน ไม่คิดว่าจะใช้เครื่องมือ Pro
แต่ถ้าคุณสร้างขึ้น ติดตามในเครื่องมือ Pro,
การส่งออกที่คุณสามารถโหลดที่ ในที่นี่กรองตัวอย่างเช่น
กระบวนการที่และบันทึกว่าเป็น เสียง Destination-- หรือ no-- ทรงกลม
โหนดประมวลผล
และจากนั้นคุณสามารถทำได้ การส่งออกที่ SoundCloud คุณ
สามารถส่งในอีเมลหรือ สิ่งที่คุณต้องการจากที่นั่น
>> แต่มีชนิดของอุปสรรคเล็กน้อย ระหว่างการทำเพล​​งในเครื่องคอมพิวเตอร์ของคุณ
และทำให้เพลงออนไลน์
>> SAM GREEN: และนั่นคือ ไม่ซ้ำกับ API นี้
มันเป็นคุณลักษณะด้านความปลอดภัยของ Chrome และ ผมคิดว่าทุกเบราว์เซอร์ที่ทันสมัย​​อื่น ๆ
เบราว์เซอร์เป็นตัวเองที่มีอยู่
ดังนั้นตัวอย่างเช่นหน้าเว็บที่ไม่สามารถ ใช้งาน JavaScript เพื่อเปิดเสียง
บนลำโพงของคุณตัวอย่างเช่น
หรือมันไม่สามารถเปิดคอมพิวเตอร์ของคุณออก
และไม่มีจุดกลาง ระหว่างทั้งสองสิ่งที่ถูกต้อง
ดังนั้นทั้งคุณมี นามธรรมที่สมบูรณ์
หรือคุณเปิดขึ้น ข้อบกพร่องของการให้การรักษาความปลอดภัย
โปรแกรมเมอร์ที่มีความตั้งใจที่ไม่ดีทำ สิ่งที่พวกเขาต้องการกับแล็ปท็อปของคุณ
และที่ว่าทำไม Chrome เป็นอยู่ในตัวเอง
>> HUGH Zabriskie: ใช่
ที่ทำให้รู้สึก?
เย็นเย็น.
ผมก็จะไป แสดงตัวอย่างของหนึ่ง
นี้สวยมากเป็น เท่าที่คุณจะได้รับในแง่
ในการเข้าถึงคอมพิวเตอร์ของผู้ใช้
หากคุณมีแป้นพิมพ์ USB เสียบ คุณสามารถใช้สิ่งที่เรียกว่าเว็บ
MIDI API ซึ่งเราจะไม่ จริงๆพูดคุยเกี่ยวกับที่นี่
แต่นี้เป็น API อื่นที่เป็น ที่สร้างขึ้นในอย่างน้อย Chrome-- อีกครั้ง
นี่คือเหตุผลที่เรารัก Chrome-- ผมคิดว่า Firefox หรือ Safari,
นี้เป็นเรื่องง่ายที่จะ เบราว์เซอร์ที่แตกต่างกันมี google--
การสนับสนุนที่แตกต่างกันที่ API ที่พวกเขาได้ดำเนิน
แต่ถ้าคุณต้องการที่จะเชื่อมต่อแป้นพิมพ์ และทำงานกับข้อมูลที่
ชนิดของการส่งแป้นพิมพ์ ข้อมูลผ่านไปยังคอมพิวเตอร์
แล้วใช้ออนไลน์ที่ API นี้ เป็นที่ที่คุณต้องการจะทำงานที่
>> เย็น.
ตกลง.
ดังนั้นการเคลื่อนไหวที่รวดเร็วที่นี่
เรากำลังทำในเวลา?
>> ลำโพง 1: 15
>> HUGH Zabriskie: 15 นาทีที่เหลือ?
ตกลงเย็น
ดังนั้นเราจะแข่งก่อนที่นี่
>> ดังนั้นโดยทั่วไปจุดหลักของ ความคิดนี้เป็นท่อ
คือการที่แต่ละขั้นตอนในท่อ เป็นชุดของโหนดเสียง
แหล่งที่มาของเราสมมติว่าเป็น oscillator
เราจำเป็นต้องสร้างโหนด oscillator
และนั่นเป็นเพียงชนิด ของ function-- เล็ก ๆ น้อย ๆ
และพวกเขากำลังทั้งหมดออก บริบทของเสียงที่นี่
>> ผู้ชม: เมื่อกล่าวว่า oscillator หมายความว่า
ก็จริงอย่างแท้จริงไปจาก สองขั้วที่แตกต่างกันไปมา?
>> HUGH Zabriskie: ไม่มีมันก็เหมือน เป็นตัวแทนดิจิตอล
มันใช้งานจริงใน C ++
ที่จริงผมไม่ทราบรายละเอียด ของวิธีการที่จะนำมาใช้จริง
แต่ทั้งหมดนี้จะทำงานเป็นข้อมูลไบนารี
อันที่จริงใช่
ที่จะบอกว่าผมจะทำได้ ที่จริงถ้าคุณสนใจ
ฉันจะส่งคุณน้อยมาก ข้อมูลเกี่ยวกับวิธีรูปคลื่น
จะถูกเก็บไว้ที่มีรูปแบบดิจิตอล
ตกลงเย็น
>> ดังนั้นเราจึงกำลังสร้างเสียงเหมือนไซน์ที่ คลื่นหรือสิ่งที่ต้องการที่อาจจะ
440 เฮิร์ตซ์
เราสร้าง oscillator
ถ้าเราต้องการที่จะตั้งค่าระดับเสียงเรา เชื่อมต่อทุกอย่างเพื่อ GainNode ที่
ซึ่งเราจะทำกับ .creategain
ที่กำหนดระดับเสียงของคุณ
คุณสามารถส่งผ่านไปยังที่ใด ของอื่น ๆ options-- ดี
เพื่อให้เป็นแหล่งบัฟเฟอร์เสียง โหนดเป็นที่ที่คุณอาจจะ
เก็บ MP3 ที่คุณโหลดใน
>> Biquad กรองสำหรับการกรองถ้า คุณต้องการที่จะใช้เวลาทั้งหมดออกจากฐาน
ของเพลงหรือสิ่งที่ต้องการที่
พระเจ้าห้ามคุณต้องการที่จะใช้ ฐานออกมาจากเพลง
และโหนด AudioDestination คืออีก เหมือนที่สรุปของเราคือ
หากคุณเคยสนใจในการดู ทุกตัวเลือกที่เป็นไปได้ที่แตกต่างกัน
เพียงแค่ไปที่แท็บและให้ อัตโนมัติที่สมบูรณ์แบบขึ้นมา
และถ้าคุณไม่สร้างคุณจะเห็นทั้งหมด สิ่งที่แตกต่างที่คุณสามารถสร้าง
คุณสามารถสร้างแบบไดนามิก หน่วยประมวลผลสคริปต์
ฉันไม่ได้รู้ว่าสิ่งที่ คือสำหรับการควบรวมผสมช่อง
และแยกช่องทางและทุกสิ่งที่
เย็น.
>> ดังนั้นนี่เป็นเพียง ตัวอย่างของท่อ
ดังนั้นเราจึงมีสามแหล่งที่มา
บางทีเหล่านี้เป็นรูปคลื่น, อาจจะเป็นไฟล์ MP3 เหล่านี้
ใครจะผ่าน กรองของอีกคนหนึ่ง
ได้รับการบิดเบือนอีก ปรากฎว่าของคนทางซ้ายและขวา
คุณสามารถทำทุกประเภทของสิ่งต่าง ๆ และ รอบพวกเขาทั้งหมดได้รับการผสมเข้าด้วยกัน
แล้วออกมาพร้อมเสียง ในตอนท้ายเป็นปลายทาง
นี่คือตัวอย่างของสิ่งที่มากขึ้น เว็บที่ซับซ้อนรหัสเสียงที่ดูเหมือนว่า
คุณกำลังสร้างสิ่งเหล่านี้ วัตถุที่แตกต่างที่เหมาะสม here--
ผมไม่แน่ใจว่านี้
ไม่มีก็ไม่ได้ซูมเข้า
ตกลง.
>> SAM สีเขียว: คุณควบคุมเลื่อนขึ้น
HUGH Zabriskie: การควบคุม Scroll--
SAM สีเขียว: ไม่มี
ควบคุม--
>> HUGH Zabriskie: โอ้, การควบคุม, เ​​ลื่อน?
โอ้ gotcha
ใช่.
ว้าว Nope, อ้าง
ตกลง.
ฉันจะไม่ทำอย่างนั้น
>> เพื่อใช่ในครั้งนี้เป็นครั้งแรก ส่วนที่นี่คุณจะเห็น
เรากำลังสร้างสิ่งเหล่านี้แตกต่างกัน โหนดออกจากบริบท
เราเพียงแค่ piecing พวกเขา ร่วมกันในส่วนที่สอง
โดยฟังก์ชั่นที่เรียกว่าการเชื่อมต่อ
นั่นเป็นกุญแจสำคัญจริงๆ ฟังก์ชั่นเสียงในเว็บ
มันก็หมายความว่าเมื่อคุณได้ทำ บางสิ่งบางอย่างกับเสียงในหนึ่งโหนด
ผ่านมันไปยังโหนดถั​​ดไป
ดังนั้นเราจึงมีแหล่งที่มาของมัน เชื่อมต่อกับการวิเคราะห์ที่
วิเคราะห์ทำอะไรกับมัน มันจะไปบิดเบือนและอื่น ๆ
และไปยังปลายทาง ที่ด้านล่างขวาที่นี่
เย็น.
ตกลงดังนั้นเราจะให้ย้าย
>> pipeline-- ครั้งเหล่านี้ เป็นท่อที่พบมากที่สุด
เพื่อให้เราพูดคุยเกี่ยวกับสิ่งเหล่านี้เช่น บิดเบือนปรากฎว่าทุกสิ่งนี้
หากคุณสนใจจริงๆ ในการใช้สิ่ง Pro เครื่องมือ
ผู้ที่อาจจะสนใจคุณ
ถ้าไม่ได้บางทีคุณอาจเพียง ต้องการที่จะเล่นเสียง
หรือบางทีคุณอาจเพียงต้องการที่จะ ตั้งค่าระดับเสียงในเสียง
เหล่านี้เป็นสองการจัดเรียงที่พบมากที่สุด ของท่อในการผลิตเสียง
>> อีกครั้งวิธีที่คุณสามารถใช้มัน ในฐานะที่เป็น oscillator-- อย่างนั้นเรามา
การสาธิตทำของที่นี่
ดังนั้นเรากำลังจะสร้าง บริบทเสียงที่เรียบง่ายที่นี่
และจากการที่เรากำลังจะไป เพื่อสร้างมือดีของเรา
เพื่อให้เป็นอีกครั้งที่เรากำลังเพียง จะเรียกสร้าง Oscillator
เรากำลังจะไปตั้งค่าความถี่ใน ที่ 440 เฮิร์ตซ์ที่ทุกคนชื่นชอบ
แล้วเราจะเชื่อมต่อไปยังปลายทาง point-- ซึ่งเป็นลำโพงเพื่อ
ปลายทางบริบท
สุดท้ายเราก็บอกว่าเริ่มต้นที่ศูนย์ วินาทีต่อจากนี้และเราได้เสียง?
>> [เรียกเข้า]
>> HUGH Zabriskie: ที่นี่เราไป
มันเป็นเพียงคลื่นไซน์
ตกลงเย็น
แล้วเราจะหยุดที่
>> ผู้ชม: Where did ข้อเสนอแนะที่มาจากไหน?
>> HUGH Zabriskie: ข้อเสนอแนะหรือไม่?
โอ้อาจไมโครโฟนของเรา
เพื่อใช่ว่าเป็นวิธีที่คุณทำมัน
และอันที่จริงถ้าผมมี เก็บมันทำงานคุณ
อาจมีความถี่ ค่าที่มันทำงาน
เพื่อให้เป็นสิ่งที่สนุกกับการเล่นรอบ
เย็น.
ที่มักจะเป็นคนหนึ่งที่น่ารักที่จะนำเสนอ
>> SAM GREEN: เราไม่ได้ คิดเกี่ยวกับการที่เราไม่?
HUGH Zabriskie: ใช่ ที่เป็นที่น่ารังเกียจอย่างใดอย่างหนึ่ง
ดังนั้น buffer loading-- ฉันจะแสดง ตัวอย่างของว่าที่ส่วนท้ายสุด
นั่นคือโหลด MP3
และไมโครโฟน, เพียงแค่คุณใช้ฟังก์ชั่น เรียกว่า Navigator.getUserMedia ()
เพื่อขอการเข้าถึงของผู้ใช้ ไมโครโฟนสำหรับข้อมูลที่
>> นี่คือการกรองฉันจะ เพียงแค่ให้ย้ายจากนี้
นี้เป็นระดับที่สูงสวย แต่กรองเพียงช่วยให้คุณสามารถ
>> [beeping]
กรองยังช่วยให้คุณ เพื่อสร้างสิ่งที่ชอบสีชมพู
เสียงสัญญาณรบกวนสีน้ำตาล, สีเสียงสีขาว
หากคุณต้องการที่จะสร้างเสียงบริสุทธิ์ที่ บางคนชอบที่จะรับประทานอาหารรอบกับ
คุณสามารถใช้เสียงเว็บ กรองจะทำอย่างนั้น
>> Panning-- เสียงเพื่อให้จินตนาการ ถ้าคุณกำลังเขียนเกม
และคุณต้องการเสียงไป เสียงเหมือนมันมาเช่น
การถ่ายภาพผ่านหน้าจอคุณ สามารถใช้ปรากฎของเสียง
เพื่อสร้างชนิดของรูปกรวยนี้ ซึ่ง like-- มัน Mathy สวย
แต่มันเป็นความจริงจริงๆ เย็นถ้าคุณได้รับมันทำงาน
และมีบางส่วนที่ดี บทเรียนเกี่ยวกับฉันสามารถส่ง
โดยทั่วไปคุณสามารถชนิด การสร้างเสียง
ของสิ่งที่เกิดขึ้นโดยในทาง 3D
และถ้าคุณมีความสนใจดีเจที่คุณสามารถ เริ่มต้นการผสมและข้ามเพลงซีดจาง
>> นี่เป็นเพียงบางขั้นพื้นฐานมาก รหัสโดยทั่วไปสิ่งที่ผมทำมาก่อน
ชุดนี้ปริมาณของ oscillator ดังนั้นเราสร้างมือดีของเรา
ซึ่งจะสร้างรูปแบบของคลื่น
เราสร้าง GainNode ของเรา ตั้งค่าความถี่ของเรา
แล้วเชื่อมต่อ oscillator ไปยัง GainNode ซึ่งโดยทั่วไปการเปลี่ยนแปลง
เท่าใดสัญญาณที่ได้รับอนุญาตผ่าน
แต่จริงๆมันเป็นดิจิตอล สิ่งเพื่อให้มันมากขึ้น just-- ใช่
นั่นไม่ใช่สิ่งที่เกิดขึ้นจริง แต่นั่นคือสิ่งที่เกิดขึ้นในชีวิตจริง
ที่มีกำไร
>> ผู้ชม: --quantization พารามิเตอร์ของปริมาณหรือไม่
HUGH Zabriskie: ขออภัย?
ผู้ชม: มันเป็น พารามิเตอร์ปริมาณไท?
HUGH Zabriskie: ใช่
และนี่คือสิ่งหนึ่งที่ฉันจริงๆ ขาดในความรู้ของฉัน
วิธีการทำงานของกำไรในระดับดิจิตอล
ฉันรู้ว่ามีจริง สัญญาณก็พื้น
การควบคุมเท่าใดคุณ ขยายสัญญาณ
ดังนั้นใช่
ฉันจะส่งข้อมูลเพิ่มเติมเกี่ยวกับ ว่าเพราะฉันจะอยากรู้อยากเห็นจริง
เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับการที่
แต่โดยทั่วไปพารามิเตอร์ หนึ่งคือ fold--
signal-- ดังและเป็นศูนย์ไม่มี สัญญาณหรือคุณจะไม่ได้ยินเสียงใด ๆ
เราจะข้ามเวลาการสาธิตเพราะเห็นว่า มันเป็นสิ่งที่ผมทำมาก่อน
และอีกครั้ง Context.Destination เป็นโหนดปลายทางเสียง
น่ากลัว, OK
>> ดังนั้นฉันจะทำอย่างรวดเร็วสองสาธิต
เรากำลังทำในเวลา?
>> ลำโพง 1: ประมาณ 10 นาที
>> HUGH Zabriskie: 10 นาที?
ที่ดี!
ที่น่ากลัว
>> ดังนั้นคนแรกที่ฉันจะ ไม่ก็เรียกว่าเพลงที่ชื่นชอบของฉัน
ดังนั้นนี้เป็นเพียง HTML JavaScript เล็ก ๆ น้อย ๆ
เรากำลังจะมีสองปุ่ม ในหน้าเล่นเพลงที่ชื่นชอบ
และหยุดเพลงที่ชื่นชอบ
ฉันจะเปลี่ยน
>> ผู้ชม: ปกคลุมไมโครโฟนของคุณ
>> HUGH Zabriskie: ใช่
และฉันได้โหลดที่นี่ สคริปต์ที่ basically--
และนี่คือที่มีประโยชน์จริงๆ สำหรับโหลด MP3,
ดังนั้นนี้ก็ทำให้ โหลดเพลง MP3 วิธีที่เร็วกว่า
มันเป็นพื้นเพียงเสื้อคลุม
มันก็จะทำให้กระบวนการของ โหลดเพลง MP3 ในได้เร็วขึ้นมาก
มิฉะนั้นคุณกำลังใช้การร้องขอ HTTP, เหมือนกับสิ่งที่เราทำ
ในปัจจุบันชิ้นตั้งกับเซิร์ฟเวอร์
มันน่าเกลียดจริงๆคุณ ไม่ต้องการที่จะทำมัน
>> ดังนั้นผู้ชายคนนี้บอริส SMUs เขียนจริงๆ เครื่องมือที่มีประโยชน์เล็ก ๆ น้อย ๆ ที่เรียกว่า BufferLoader
สิ่งที่คุณทำคือเพียงแค่ผ่านมัน บริบทคุณผ่านมัน list--
หรือใช่มันเป็นรายการใน JavaScript หรือไม่?
SAM GREEN: อาร์เรย์
HUGH Zabriskie: โอ้มันเป็น อาร์เรย์ที่เหมาะสม
มันเป็นอาร์เรย์ของเส้นทาง ไปยังไฟล์ที่แตกต่างกัน
แล้วคุณจะผ่านมันฟังก์ชั่น
นี่คือการเรียกกลับที่เราได้พูดคุย เกี่ยวกับกับการโหลดไม่ตรงกัน
ที่จะถูกเรียกว่า ที่ครั้งหนึ่งเคยโหลดไฟล์
และฟังก์ชั่นที่เรียกว่าเมื่อ ของการโหลดไฟล์จะเป็นปริมณฑล
อาร์เรย์ของบัฟเฟอร์โหลด
ดังนั้นที่เกิดขึ้นที่นี่
โดยทั่วไปเป็น BufferList จะเป็นหนึ่ง value--
หรือจะเป็นอาเรย์ของ ระยะเวลาหนึ่งที่มีอยู่ในนั้นอยู่ในดัชนี
ศูนย์โหลดไฟล์ทั้งหมดของ MP3
ดังนั้นสิ่งที่ฉันทำเมื่อฉันเสร็จ โหลดผมก็
สร้างแหล่งบัฟเฟอร์ซึ่ง เป็นแหล่งที่มาของโหนดบัฟเฟอร์เสียง
ขั้นตอนต่อไปคือผมโหลดใน source.buffer เป็นบัฟเฟอร์โหลดเต็ม
จาก BufferList-- มันเป็นจำนวนมาก buffers--
และจากนั้นคุณเชื่อมต่อเสียงที่ บัฟเฟอร์ไปยังปลายทาง
ดังนั้นสิ่งที่จะทำ เป็นเพียงแค่ใส่เพลง MP3
ตรงผ่านการส่งออก และเริ่มต้นทันที
เมื่อได้รับสายนี้
>> เย็นดังนั้นเรามาดู เรื่องนี้เกิดขึ้นในการดำเนินการ
ของฉัน [ไม่ได้ยิน] ที่นี่เรามาดู
ดังนั้นฉันแค่ไป เริ่มต้นเซิร์ฟเวอร์ขั้นพื้นฐาน
นั่นคือสิ่งที่ ที่คุณต้องทำถ้าคุณ
การขอรับการโหลดไฟล์
ฉันจะเริ่มต้นเซิร์ฟเวอร์ขั้นพื้นฐาน
นี้เป็นพื้นทั้งหมดของคุณ PSET ตอนนี้ในหนึ่งบรรทัด
แต่มันเป็นเพียงแค่การเริ่มต้น เซิร์ฟเวอร์พอร์ต 80/80
ดังนั้นเราจึงไปกว่าที่นี่เรา จะโหลด 80/80,
เรากำลังจะไปที่เพลงที่ชื่นชอบของฉัน
ดังนั้นถ้าผมตี "เล่นของฉัน เพลงโปรด "ในขณะนี้
มันจะโหลดของฉัน เพลงที่ชื่นชอบและเล่น it--
[ดนตรี - นกอินทรี "ชีวิตใน FAST LANE "]
--which เกิดขึ้นเป็น "ชีวิตใน ช่องทางที่รวดเร็ว "โดยนกอินทรี
ตอนนี้ผมสามารถตี "หยุดของฉัน เพลงโปรด "และเล่นมัน
>> [ดนตรี - นกอินทรี "ชีวิตใน FAST LANE "]
>> และถ้าเราไปมากกว่าที่จะปลอบใจเพราะ ผมใช้ตัวแปรทั่วโลกมากกว่าที่นี่
ในการติดตามค่านี้ก็จริง ตอนนี้จะได้รับการยอมรับในคอนโซล
ดังนั้นจึงสร้างอัตโนมัติสำหรับฉัน
นั่นคือสิ่งที่เล่นตอนนี้ และฉันก็สามารถเรียก source.stop ()
ว่า
ดีที่คุณรู้อะไรไหม
เพียงเพื่อให้พวกคุณเคยได้ยินเรื่องนี้ song-- คุณอาจจะรู้จักเพลงนี้
>> [ดนตรี - RICK Astley "จะไม่ทำให้ คุณ "]
[ดนตรี - นกอินทรี "ชีวิตใน FAST LANE "]
ตอนนี้เราได้รับการ Rickrolled
ตกลงที่ดีในการเคลื่อนย้าย
เย็น.
ดังนั้นนี่เป็นพื้นตัวอย่างของ เพียงวิธีการที่คุณสามารถโหลด MP3 file--
[ดนตรี - นกอินทรี "ชีวิตใน FAST LANE "]
--and เล่นและหยุดและเริ่มต้น
ฉันจะได้ทำมากขึ้น [ไม่ได้ยิน]
>> คนสุดท้ายที่ฉันจะทำคือ ฉันจะแสดงให้คุณ [ไม่ได้ยิน]
>> [เล่นเพลง]
>> มันเหมือนกับ ogg.wave.mp3
ผมคิดว่าถ้าผมจำไม่ผิด ผมเคยทำงานเป็นบางประเด็นที่มี .m4a,
แต่ผมไม่แน่ใจว่าเกี่ยวกับการที่
ผมคิดว่า mp3.wave--
>> [ดนตรี - RICK Astley "จะไม่ทำให้ คุณ "]
>> ตกลงที่ดี
ผมไม่ควรจะบอกว่า
อย่างไรก็ตามสวัสดี
ดังนั้นเราจึงมีการเปิดนี้
ดังนั้นตอนนี้สิ่งที่ผมทำคือผมสร้างพื้น ไวยากรณ์ขั้นพื้นฐานสำหรับการสร้างเพลง
ดังนั้นถ้าผมทำสิ่งที่ต้องการเพิ่ม g4 เมื่อวันที่ 1 ที่ 2 สิ่งที่หมายถึงก็คือว่า
เพิ่มบันทึกเปียโน G4, ซึ่งเป็นหนึ่งในสี่ G
ขึ้นบนเปียโนจากด้านล่าง
ดังนั้นนี้เป็นชนิดของ MIDI พูด, ดังนั้นสำหรับผู้ที่มีเพลงที่ใช้
นี้เป็นเพียงบันทึก MIDI
>> ผู้ชม: นั่นคือ G ของกลาง C ใช่มั้ย?
>> HUGH Zabriskie: นี่คือ G เหนือกลาง C ที่เหมาะสม
>> ผู้ชม: เหนือกลางซี
>> HUGH Zabriskie: ใช่
อันที่จริงใช่
ผมคิดว่าผมทำจริง มันเป็นหนึ่งใน [ไม่ได้ยิน]
ดังนั้นนี้อาจจะมีคู่ข้างต้นว่า
ดังนั้นเรามาดู
ถ้าผมตี Play--
[ซ้ำเปียโนหมายเหตุ]
--we're จะได้ยินว่า
แนวคิดก็คือว่าจะดำเนินการ เช่นเดียวกับบรรทัดคำสั่งจะ,
ดังนั้นถ้าฉันไปขึ้นและลง บนแป้นพิมพ์ของฉันคุณ
สามารถกลับไปก่อนหน้านี้ คำสั่งซึ่งจะเป็นประโยชน์สวย
และด้านล่างเป็นรายการของแทร็ค ซึ่งได้รับการทำงานบนห่วง
>> ผู้ชม: คุณได้สมมติว่า แป้นพิมพ์ 88 คีย์ว่าใช่มั้ย?
>> HUGH Zabriskie: คำถามคือ ฉันสมมติว่าแป้นพิมพ์ 88 คีย์
และใช่ฉัน
สิ่งที่ผมทำคือผม โดยทั่วไปใช้เวลา 88 ตัวอย่าง
ของเปียโนหนึ่งสำหรับแต่ละครั้ง
และเพื่อให้ทุกครั้งที่คุณ ได้ยินเสียงบันทึกจากนี้ไป
ที่เป็นจริงวงที่มีลักษณะ like-- นี้คือการเล่นในวง
เพื่อให้ทราบทุกนี้กำลังทำงาน
สิ่งที่เกิดขึ้นคือผม สร้างบัฟเฟอร์อีกครั้ง
สร้างโหนดกำไรที่จะตั้งค่าระดับเสียงที่
เพียงแค่นี้จริงๆ วิธีที่ซับซ้อนของการบอกว่าฉัน
เก็บบัฟเฟอร์ใน source.buffer
ฉันให้กำไรที่ฉัน เชื่อมต่อกับกำไรที่
กำไรที่มีการเชื่อมต่อกับ การส่งออกและจากนั้นผมเล่นมัน
เพื่อให้เป็นชนิดของกระบวนการ ของการในแหล่งบัฟเฟอร์
>> ผู้ชม: คุณสามารถใช้เวลาที่เป็นจริง เสียงแห้งและทำให้มันเปียก [ไม่ได้ยิน]
>> HUGH Zabriskie: คุณสามารถใช่
มีอีกคำกริยาเป็นมี ความล่าช้าการบิดเบือน
โดยทั่วไปคุณสามารถใส่อะไรใน ระหว่างในแซนวิชที่ of-- ดี
ท่อเป็นคำเปรียบเทียบที่ดีกว่า แต่คุณสามารถเพิ่มอะไรในการที่
เย็น.
>> ดังนั้นผมจึงจะเสร็จสิ้นการสาธิต ที่นี่เพื่อให้คุณมีความรู้สึก
เพียงจำนวนของครั้งที่คุณ สามารถเรียกใช้ฟังก์ชั่นที่ทั้งหมดในครั้งเดียว
ดังนั้นฉันจะลบ
ฉันจะสร้างเครื่องกำเนิดไฟฟ้า that-- โดยทั่วไปสิ่งที่ does-- นี้เป็นจริง
ชนิดของ syntax-- ซับซ้อน แต่ก็ จะสร้างบันทึกได้ทันที
และเพิ่งเริ่มเล่น พวกเขามันประเมินพวกเขา
[interposing เปียโน]
>> ดังนั้นเราก็สามารถทำให้เพลงเล็ก ๆ น้อย ๆ ที่นี่
[interposing เปียโน]
>> ดังนั้นสิ่งที่คำสั่งนี้ ไม่เช่นเป็น
มันจะใช้เวลาทั้งสามบันทึกสำหรับ เปียโนแล้วทำให้พวกเขาบน B3
รูปแบบนี้อาจจะทำให้ ความรู้สึกเล็ก ๆ น้อย ๆ
ให้กับผู้ที่มี เพลงพื้นหลังที่นี่
>> ฉันสามารถเพิ่มเตะกลอง
ฉันทำได้--
>> [interposing เครื่องมือ]
>> --just เล่นรอบกับที่
>> เพื่อให้คุณสามารถ make--
[interposing เครื่องมือ]
หนึ่งที่เล็ก ๆ น้อย ๆ ที่น่ารำคาญมากขึ้น
[interposing เครื่องมือ]
>> ดังนั้นที่สุ่มเพิ่มฉาบแห้ง ทราบทุกวันที่ 16 กับ 16%
[ไม่ได้ยิน]
>> [interposing เครื่องมือ]
>> ใช่ดังนั้นวิธีการนี​​้ works-- มันเสมอใน 4: 4
[interposing เครื่องมือ]
>> ใช่ดังนั้นสี่และ 16/8
[interposing เครื่องมือ]
>> ดังนั้นโดยเฉลี่ยแล้วคุณจะได้รับ 60% ของฮิตบันทึกที่ 16
>> Anyways นี้เป็นเพียง ชนิดของการแสดงปิด
บางสิ่งที่คุณสามารถทำได้ สร้างด้วยเว็บเสียงของ API
มันมีประสิทธิภาพจริงๆก็รวดเร็วจริงๆ และคุณสามารถทำสิ่งต่างๆมากมายเย็น
กับมัน
ดังนั้นอีกครั้งคำถามใด ๆ ที่คุณมี อีเมล myself-- Hugh-- หรือแซม
และตรงไปตรงมา Google ได้ ตันของแหล่งข้อมูลที่ดี
คำถามใด ๆ ที่ผ่านมา?
ใช่.
>> ผู้ชม: เพ​​ื่อให้คุณสามารถเข้าถึง ไมโครโฟนในตัว
ถ้าคุณต้องการที่จะ ใช้ไมโครโฟนดีกว่า?
HUGH Zabriskie: ถ้าคุณต้องการ ที่จะใช้ไมโครโฟนดีกว่า?
ดังนั้นครั้งนี้เป็นส่วนหนึ่งของ นามธรรมระหว่างโครเมี่ยม
และส่วนที่เหลือของคอมพิวเตอร์ของคุณ
เว้นแต่จะสามารถใช้ได้ผ่าน API ที่เช่นเว็บ MIDI API,
คุณอาจจะพบว่าแฮ็กบาง แต่โดยทั่วไปไม่ได้ที่เป็นไปได้
>> SAM สีเขียว: คุณสามารถ also-- ทุก Chrome รู้
คือสิ่งที่ไมโครโฟนเริ่มต้นของคุณ และมันเข้าถึงที่
ดังนั้นถ้าคุณมีไมโครโฟนที่คุณสามารถ ตั้งเป็นค่าเริ่มต้นไมโครโฟนของคอมพิวเตอร์
คุณสามารถเข้าถึงมันเป็นอย่างนั้น และมันอาจจะทำงาน
HUGH Zabriskie: นั่นเป็นจุดที่ดี
ฉันไม่เคยพยายามที่ แต่ คุณอาจจะสามารถชนิด
of-- ถ้าคุณเปลี่ยนเส้นทางลำโพงใส่ คุณอาจจะสามารถที่จะทำอย่างนั้นใช่
>> คำถามใด ๆ ที่ผ่านมา?
เย็น.
ดีขอขอบคุณพวกคุณ มากสำหรับการดู
ฉันฮิวจ์
SAM GREEN: ฉันแซม
HUGH Zabriskie: และนี่คือ CS50