1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM GREEN: Hi, ყველას. 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 HUGH Zabriskie: მე Hugh. 6 00:00:11,050 --> 00:00:17,420 SAM GREEN: ჩვენ ვაპირებთ, რომ გაიგო დღეს JavaScript და ვებ აუდიო API. 7 00:00:17,420 --> 00:00:21,180 უბრალოდ დაიწყოს, ეს არის მონახაზი ჩვენს დღის წესრიგში სემინარზე. 8 00:00:21,180 --> 00:00:25,350 ჩვენ ვაპირებთ, რომ დაიწყოს საუბარი რატომ უნდა იყოს დაინტერესებული ვებ 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 ამის შემდეგ, ჰიუ იქნება ვისაუბროთ ზოგიერთ ეტაპების აუდიო წარმოების 14 00:00:41,140 --> 00:00:45,509 და შემდეგ დემო ამ გასაოცარია 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 >> HUGH Zabriskie ზემოთ. 18 00:00:50,540 --> 00:00:50,990 >> SAM GREEN ზემოთ. 19 00:00:50,990 --> 00:00:51,383 >> HUGH Zabriskie ზემოთ. 20 00:00:51,383 --> 00:00:52,170 მე უკან. 21 00:00:52,170 --> 00:00:54,960 >> SAM GREEN: ასე რომ, პირველი რამ პირველი. 22 00:00:54,960 --> 00:00:57,840 ასე რომ, ერთი დიდი რამ შესახებ Web აუდიო API 23 00:00:57,840 --> 00:01:00,480 ის არის, რომ არ არის მითითებული up საჭირო. 24 00:01:00,480 --> 00:01:04,230 ეს მოდის ჩაშენებული ყველაზე თანამედროვე ბრაუზერებში, 25 00:01:04,230 --> 00:01:08,630 მათ შორის, Chrome, Edge, მთელი bunch of 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 ვებ სერვერზე აპირებს, რადგან თქვენ უნდა დავიწყოთ მუშაობა 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 for 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 და თქვენ დაუტოვებიათ click შეამოწმოს ელემენტის, და შემდეგ 37 00:01:43,897 --> 00:01:46,730 თქვენ კი ეს პატარა ჩამოსაშლელი სწორედ აქ და ვაწვებით Console, 38 00:01:46,730 --> 00:01:50,660 თქვენ ნახავთ, რა ხსნის გამოიყურება ბევრი მოსწონს command prompt, რომ თქვენ 39 00:01:50,660 --> 00:01:53,720 შეიძლება ნახოთ თქვენს Mac, ან პირადობის მოწმობა. 40 00:01:53,720 --> 00:01:59,260 და ისევე, როგორც, რომ, ჩვენ შეგვიძლია ტიპი ბრძანებები აქ, ისევე როგორც წმინდა, 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 და ეს სუპერ მოსახერხებელი გზა დაუკარით გარშემო APIs 45 00:02:11,430 --> 00:02:15,760 და მიღების კომფორტულად JavaScript უფლება off bat. 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 მოგერიდებათ ელ us-- ეს არის ჩვენი ელექტრონული ფოსტის მისამართები. 53 00:02:31,232 --> 00:02:33,190 თუ თქვენ გაქვთ შეკითხვები თქვენ არ მინდა ვთხოვო, 54 00:02:33,190 --> 00:02:36,160 მოსწონს, რა მაქვს bug ჩემი კოდი, ან რამე 55 00:02:36,160 --> 00:02:39,270 რომ ცოტა უფრო კონკრეტული, იქნებ Google იგი. 56 00:02:39,270 --> 00:02:42,340 არსებობს ბევრი დიდი რესურსი შესახებ Web აუდიო 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 მშენებლობის fun stuff თავს. 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, რატომ ვებ აუდიო 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 tag რომ 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 მაგრამ მიღების შესახებ ინსტალაცია დანამატი ნამდვილად 76 00:03:45,370 --> 00:03:48,480 ნაკლი, მათ შორის Flash თქვენს განაცხადს, არა? 77 00:03:48,480 --> 00:03:52,410 იმის გამო, რომ მაშინ თქვენ დამოკიდებული მომხმარებლის აპირებს და მოძიებაში ეს დანამატი, 78 00:03:52,410 --> 00:03:54,660 და ალბათ მიმდინარეობს აღმოჩნდა off ამ ზედმეტი ნაბიჯი 79 00:03:54,660 --> 00:03:56,640 მათ უნდა მიიღონ გამოიყენოთ თქვენი app. 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, აუდიო tag, რომელიც 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, ვებ აუდიო 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 ნამდვილად მისაღებად შევიდა შენობა მაგარი რამეები ინტერნეტში. 91 00:04:36,590 --> 00:04:39,220 დიდი ხნის განმავლობაში იქ მართლაც ძლიერი ინსტრუმენტები 92 00:04:39,220 --> 00:04:44,360 მშობლიური აუდიო პროგრამები, მოსწონს ყველამ იცის, 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-- ვებ დაფუძნებული პლატფორმა 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 და როგორც ის, თუ მოგვიანებით, ვებ აუდიო 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 >> HUGH Zabriskie: არსებობს ორი სლაიდები აქ. 112 00:05:27,870 --> 00:05:30,245 >> SAM GREEN: ეს არის მოკლე ზოგიერთი შეზღუდვები 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 წინააღმდეგ in a ენის 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, char. 124 00:06:01,900 --> 00:06:05,210 In 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 ერთი მაგარი ფუნქციები of 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 რომ თავდაპირველად ქმნის რიცხვი ცვლადი 132 00:06:27,790 --> 00:06:29,870 მარჯვენა ქვეშ hood 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 ზოგადად ფარგლებში Curly braces ფარგლებში ფუნქცია, 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 და C კერძოდ, 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 >> HUGH Zabriskie: Yep. 156 00:07:46,330 --> 00:07:49,120 >> SAM GREEN: ასე რომ, ასევე პატარა ცოტა ხმაურიანი შედარებით C, 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 ისევ და ისევ, უბრალოდ, ყურადღების გამახვილება, გლობალური წინააღმდეგ ადგილობრივი ცვლადები 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 ასე რომ, პირველ რიგში, ეს არის რა, თუ-სხვაგან განცხადებები გამოიყურებოდეს 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 >> HUGH Zabriskie: ცდილობს გასვლა? 177 00:08:46,841 --> 00:08:49,770 SAM GREEN: არა, მე ვარ უბრალოდ ცდილობს, რომ მიუახლოვდით. 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 >> ასე რომ, ჩვენ გვაქვს "თუ" განცხადება და ჩვენ გვაქვს მდგომარეობა შიგნით 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 ანალოგიურად, ჩვენ სხვას თუ, და სხვაგან, ისევე, როგორც ჩვენ გამოიყენება in C. 184 00:09:09,860 --> 00:09:14,010 >> თქვენ ასევე უნდა იყოს საკმაოდ კომფორტული უფლება off bat მარყუჟების, 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 initializations. 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 და შემდეგ შინაარსი ფუნქცია შიგნით იმ Curly braces. 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 და ჩვენ გაუტოლდება, რომ ამ ზოგადი რამ ფუნქცია, რომელიც 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 ჩვენ დავინახავთ, მაგალითად ფუნქცია არგუმენტი მომდევნო slide. 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 GREEN: ასე რომ, კითხვა იყო, თუ რა ხდება, 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 >> HUGH Zabriskie: ეს უფლება, yeah. 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 GREEN: რომელი შეუძლია რეალურად იყოს მოსახერხებელი, თუ 237 00:11:45,810 --> 00:11:49,060 გსურთ დაწეროთ ფუნქცია, რომელიც იღებს ცვლადი რაოდენობის არგუმენტები. 238 00:11:49,060 --> 00:11:55,830 შეგიძლიათ დააყენოთ default ღირებულებების განმარტება ფუნქცია, 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 ეს არის მაგალითი, რომ არის ცოტა გონება-აფეთქებით 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 ("Hello"). 249 00:12:28,535 --> 00:12:32,220 შეგიძლიათ წარმოიდგინოთ, console.log როგორც JavaScript ექვივალენტი printf. 250 00:12:32,220 --> 00:12:35,510 ასე რომ, რა მოხდება, თუ ჩვენ აწარმოებს ამ კოდი ჩვენი ბრაუზერის, 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 აუდიტორია: By ჟურნალი, თუმცა, იმას, რომ ნიშნავს, რომ ის იწერება სადმე? 254 00:12:42,300 --> 00:12:42,550 SAM GREEN: ჰო. 255 00:12:42,550 --> 00:12:44,216 ასე რომ, მე გაჩვენებთ, თუ რა მოხდება. 256 00:12:44,216 --> 00:12:48,085 ასე რომ კითხვა იყო, რას სისტემაში შესვლა ნიშნავს? 257 00:12:48,085 --> 00:12:51,262 >> HUGH Zabriskie: ასე console.log ჰგავს printf, C. 258 00:12:51,262 --> 00:12:52,970 SAM GREEN: ასე console.log ჰგავს printf, 259 00:12:52,970 --> 00:12:59,240 ასე რომ, თუ მე ამ console.log ("Hello"), და მოვუწოდებ, რომ სტრიქონი "Hello" 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 გულისხმობდა console ობიექტი, და მოუწოდებს მეთოდი, რომ ობიექტი. 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 HUGH Zabriskie: ჩვენ გამოიყენება C, 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 GREEN: ასე რომ ბრუნდება ამ მაგალითად მეორე ხაზი კოდი 278 00:13:51,420 --> 00:13:55,320 აქ არის საკმაოდ გონება- boggling ჩემი უფროსი. 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 რომ ელოდება ერთი არგუმენტი, f, 282 00:14:10,170 --> 00:14:12,990 და მაშინ იგი მოუწოდებს, რომ ფუნქცია, ვ, რომელიც 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 მას შემდეგ, რაც ამ ორი ხაზი კოდი, შედეგების "Hello" 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 რომ ობიექტზე ორიენტირებული, რომელიც არის ერთ ერთი ძალიან 305 00:15:20,510 --> 00:15:23,800 პოპულარული ხმაურს სიტყვა კომპიუტერულ მეცნიერებათა. 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 >> მაგრამ ჩვენ შეგვიძლია ასევე წარმოვიდგინოთ სიტუაცია, , სად შეგვიძლია ვიფიქროთ სიტუაციაში 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 ასე რომ, ეს ცოტა ხმაურიანი, რომ გზა. 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 ერთხელ ვაცხადებთ, ობიექტი და instantiate ის, 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 და გზა, რომელიც გამოიყურება, ჩვენ უნდა ეს გარე წყვილი Curly braces აქ 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-- საპირისპირო მსხვილი ნაწლავის აქ 348 00:18:16,790 --> 00:18:19,850 არის ფაქტობრივი ღირებულება რომ უნდა იყოს შენახული. 349 00:18:19,850 --> 00:18:26,210 >> ასე რომ, ხედავთ, რომ ჩვენ გვაქვს გასაღები მოუწოდა fn ღირებულების sam, 350 00:18:26,210 --> 00:18:29,430 მოჰყვა მძიმე, განაცხადა, გადატანა მომდევნო შესვლის. 351 00:18:29,430 --> 00:18:33,560 მაშინ გასაღები მოუწოდა შესახვევში, ღირებულება მწვანე, 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 და მიიღეთ sam, გაიყვანოს მას ყველა გზა უკან, გამყარებაში მას აქ, და შემდეგ გადაადგილება. 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 GREEN: ასე რომ კითხვა იყო, არის კითხვის კეთდება იმიტომ პარამეტრი 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 რა მოხდება, აქ არის, ამ dot ამბობს, რომ JavaScript, 371 00:19:32,470 --> 00:19:39,990 OK, მე მისაღებად გარკვეული მნიშვნელობა ამ ობიექტის თავს. 372 00:19:39,990 --> 00:19:46,375 და მაშინ ყველაფერს ვეძებოთ შესვლის მოუწოდა fn, და თუ ის თვლის, 373 00:19:46,375 --> 00:19:48,470 ის ყველაფერს დაბრუნების რომ value-- ასე რომ, ეს sam. 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-- თუ თქვენ მიიღოს typo, ეს შეიძლება გამოიწვიოს უცნაური შეცდომები. 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 HUGH Zabriskie: თუ ჩვენ ობიექტი? 391 00:20:42,870 --> 00:20:44,161 SAM GREEN: რა თქმა უნდა, რომ გავაკეთოთ. 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 >> HUGH Zabriskie თქვენ უნდა გავაკეთოთ Shift-Enter. 408 00:21:46,352 --> 00:21:47,643 >> SAM GREEN: ო, ეს არის შემაშფოთებელი. 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 Oh. 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 >> ასე რომ, მე მხოლოდ ის ეს ფუნქცია, ვ, რომ 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 და შეძლებს ბეჭდვა მნიშვნელობა out. 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 >> ასე რომ, ვერსია იყო generic ვერსია, რაც იმას ნიშნავს, 429 00:23:07,560 --> 00:23:13,780 რომელიც ჩვენ შევქმენით ობიექტი ამ ფრჩხილებში notation-- გაუწიოს 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 ჩემი კლასის ისე სახელი საქართველოს მრავალჯერადი 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 იქნება უბრალოდ მინდა, Curly გაუწიოს, ქუჩა, მსხვილი ნაწლავის, 442 00:23:55,930 --> 00:23:59,630 ეს არის ტექსტი, მძიმით, Curly გაუწიოს. 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 თქვენ თხოვნით, ზოგიერთ სერვერზე სადღაც, 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 რა მოხდება, თუ მომხმარებელს სურს დააწკაპუნეთ ჩამოსაშლელი მენიუ? 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 OK, გავაკეთოთ ეს ოპერაცია ასინქრონულად. 469 00:25:31,870 --> 00:25:36,520 ასე რომ, დაველოდოთ იმ ფონზე, და მაშინ, როდესაც ოპერაცია კეთდება, 470 00:25:36,520 --> 00:25:39,420 დარეკეთ უკუგამოძახება ფუნქცია მოვუწოდებ ზოგიერთი ფუნქცია, 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 აუდიო 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 ეს სუპერ სასარგებლო ფუნქცია ყველა თანამედროვე ბრაუზერებში, 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-- ასე რომ, R-E-P-L, 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 ეს გაძლევთ საშუალებას სწრაფად წავიდეს წრეების iterating, რომელიც არის მართლაც მაგარი. 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 tag 506 00:27:34,040 --> 00:27:39,500 ზედა ან ბოლოში HTML ფაილი სადმე შიგნით HTML ფაილი, 507 00:27:39,500 --> 00:27:40,440 ნამდვილად. 508 00:27:40,440 --> 00:27:47,390 და შიგნით სცენარი აქვს, არსებობს ორ ქვე-გზები იმპორტიორი JavaScript. 509 00:27:47,390 --> 00:27:51,370 პირველი არის ის, რომელსაც აქვს ცალკე JavaScript ფაილი 510 00:27:51,370 --> 00:27:58,010 რომ ჩვენ იმპორტი მთლიანად, ან მიერ, რომელსაც ფართობი კოდი კინოსცენარზე 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 GREEN კითხვა იყო, ერთ-ერთი უკეთესია, ვიდრე სხვა. 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 , რომ არის და ეს გრძელდება ხშირად სხვა ფაილი. 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 refactored ერთ 530 00:28:49,340 --> 00:28:51,950 ფაილი, რომელიც შეგიძლიათ იმპორტი უფრო, ვიდრე ერთ ადგილას 531 00:28:51,950 --> 00:28:54,570 საშუალებას იძლევა კოდი უნდა იყოს უფრო მეტი maintainable. 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-- ვებ აუდიო აგებული, 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 >> აუდიტორია: [INAUDIBLE] 544 00:29:24,286 --> 00:29:25,410 SAM GREEN ყველა უფლება, მაგარი. 545 00:29:25,410 --> 00:29:27,200 ასე რომ, ახლა ის აპირებს ვისაუბროთ API. 546 00:29:27,200 --> 00:29:28,490 >> HUGH Zabriskie ზემოთ. 547 00:29:28,490 --> 00:29:28,990 მადლობა, სემ. 548 00:29:28,990 --> 00:29:30,184 >> SAM GREEN: რა თქმა უნდა. 549 00:29:30,184 --> 00:29:32,600 HUGH Zabriskie: გასაოცარია, ასე რომ ჩვენ გადაადგილება 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 ასინქრონული loading. 553 00:29:41,980 --> 00:29:46,100 ეს არის ყველაფერი, რომ თქვენ ვხედავ, როგორც თქვენ იყენებთ ვებ აუდიო. 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-- თქვენ გაქვთ Oscillator, რომელიც 563 00:30:16,690 --> 00:30:21,340 ქმნის sine ტალღა, კოსინუსი ტალღა, ჩვენ ვაპირებთ, რომ ნახოთ როგორ მუშაობს. 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 მინდოდა app მოსწონს მოედანზე დეტექტორი, 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 ან თქვენ აყენებს ხმის out თქვენი კომპიუტერის მეშვეობით მშობლიურ, 582 00:31:11,939 --> 00:31:14,730 ან თქვენ სახის ჩაწერა, ასე რომ, თქვენ შენახვის იგი როგორც აუდიო მონაცემები. 583 00:31:14,730 --> 00:31:18,980 ასე რომ, შესაძლოა, თუ ვინმე ქმნის მუსიკა თქვენი app და შემდეგ 584 00:31:18,980 --> 00:31:22,410 გსურთ ჩაიწეროს, რომ და შესაძლოა, როგორც ექსპორტი, ეს SoundCloud, მაგალითად 585 00:31:22,410 --> 00:31:25,281 რომ იქნებოდა ერთი გზა უნდა გააკეთოს, რომ. 586 00:31:25,281 --> 00:31:27,030 ყველა fun stuff, რომელიც ჩვენ ვსაუბრობთ, 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 ერთხელ ის პრაქტიკულად არ საკმაოდ მუშაობა. 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 ნამდვილად, თუ თქვენ დაინტერესებული, რა ცდილობს ამ საკუთარი console უფლება 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 ნამდვილად გადაღება me ელექტრონული შემდეგ იმიტომ, რომ ის 623 00:33:16,990 --> 00:33:18,330 ცოტა უფრო რთული. 624 00:33:18,330 --> 00:33:21,590 მაგრამ ზოგადად, თქვენ მხოლოდ ამ სახის საქართველოს outputting ხმის გარკვეული ფორმით. 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 HUGH 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 >> HUGH Zabriskie: With 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 პროცესორი Node. 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 GREEN: და არ არის უნიკალური ამ 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 on თქვენს მშობლიურ, მაგალითად. 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 პროგრამისტი ცუდი ზრახვები გააკეთებს რასაც უნდათ თქვენი კომპიუტერი. 658 00:35:14,440 --> 00:35:18,104 ამიტომაც არის, რომ Chrome თვითმმართველობის შეიცავს. 659 00:35:18,104 --> 00:35:19,310 >> HUGH Zabriskie: ჰო. 660 00:35:19,310 --> 00:35:20,840 ამას რამე აზრი აქვს? 661 00:35:20,840 --> 00:35:21,369 ზემოთ, ზემოთ. 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 კლავიატურის plugged in, თქვენ შეგიძლიათ გამოიყენოთ რაღაც მოუწოდა ვებ 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 და შემდეგ გამოიყენოთ, რომ ამჟამად, ამ 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 >> HUGH Zabriskie: 15 წუთი დარჩა? 680 00:36:05,543 --> 00:36:06,160 OK, მაგარი. 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 ჩვენი წყაროს ინფორმაციით, ვთქვათ, არის Oscillator. 686 00:36:20,950 --> 00:36:23,380 ჩვენ უნდა შევქმნათ oscillator კვანძი. 687 00:36:23,380 --> 00:36:25,690 და ეს არის მხოლოდ სახის პატარა ფუნქცია 688 00:36:25,690 --> 00:36:30,460 და ისინი ყველა საფუძველზე გარეთ აუდიო კონტექსტში აქ. 689 00:36:30,460 --> 00:36:32,885 >> აუდიტორია: როცა ეს განაცხადა, oscillator, ნიშნავს 690 00:36:32,885 --> 00:36:37,250 სინამდვილეში ფაქტიურად აპირებს ორი სხვადასხვა ბოძები და უკან? 691 00:36:37,250 --> 00:36:41,170 >> HUGH 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 სინამდვილეში, yeah. 697 00:36:52,370 --> 00:36:53,950 ეს იქნება ამბობდა, მე ვერ რეალურად, თუ თქვენ დაინტერესებული, 698 00:36:53,950 --> 00:36:56,533 მე ვერ გამოგიგზავნით ცოტა მეტი ინფორმაცია, თუ როგორ waveforms 699 00:36:56,533 --> 00:37:00,181 ინახება, რომელსაც ციფრულ ფორმატში. 700 00:37:00,181 --> 00:37:00,680 OK, მაგარი. 701 00:37:00,680 --> 00:37:03,120 >> ასე რომ, ჩვენ მომტანი ტონი მოსწონს sine ტალღის ან რამე მაგდაგვარს, შესაძლოა, 702 00:37:03,120 --> 00:37:04,190 440 ჰერცი. 703 00:37:04,190 --> 00:37:05,830 ჩვენ ვქმნით Oscillator. 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 უბრალოდ წასვლა tab და მოდით ავტო-სრული ამუშავება. 716 00:37:45,190 --> 00:37:48,690 და თუ თქვენ შექმნით, თქვენ დაინახავთ ყველა სხვადასხვა რამ, რომ თქვენ შეგიძლიათ შექმნათ. 717 00:37:48,690 --> 00:37:50,398 თქვენ შეგიძლიათ შექმნათ დინამიური script პროცესორები, 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 იქნებ ეს არის waveforms, იქნებ ეს არის MP3s. 725 00:38:06,830 --> 00:38:08,740 ერთი გადის ფილტრი, კიდევ ერთი 726 00:38:08,740 --> 00:38:12,404 არც დამახინჯებული სხვა ერთი პანორამირება მარცხენა და მარჯვენა. 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 თქვენ შექმნით ყველა ეს სხვადასხვა ობიექტების უფლება აქ 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 GREEN თქვენ ამის კონტროლი, Scroll-Up. 735 00:38:31,257 --> 00:38:32,590 HUGH Zabriskie კონტროლის Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM GREEN: არა, არა. 737 00:38:33,000 --> 00:38:33,500 Control-- 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> HUGH Zabriskie: Oh, კონტროლის, გადახვევა? 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 Wow, nope, nope. 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 >> ასე რომ, yeah, ამ პირველი განყოფილებაში აქ, თქვენ ხედავთ 746 00:38:48,300 --> 00:38:52,720 ჩვენ შექმნის ყველა ამ სხვადასხვა კვანძების გარეთ კონტექსტში. 747 00:38:52,720 --> 00:38:54,980 ჩვენ უბრალოდ piecing მათ ერთად მეორე ნაწილი 748 00:38:54,980 --> 00:38:56,980 ამ ფუნქციის მოუწოდა დაკავშირება. 749 00:38:56,980 --> 00:38:58,830 ეს არის ნამდვილად გასაღები ფუნქცია Web აუდიო. 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 OK, ასე რომ, ჩვენ გავაგრძელებთ მოძრავი. 757 00:39:14,640 --> 00:39:17,180 >> Pipeline-- კიდევ ერთხელ, ეს ყველაზე გავრცელებული ნავთობსადენების, 758 00:39:17,180 --> 00:39:21,300 ასე რომ, ჩვენ ვსაუბრობთ ეს ყველაფერი მოსწონს დამახინჯება, პანორამირება, ყველა ამ პერსონალის. 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 >> ისევ და ისევ, გზები შეგიძლიათ მას in, როგორც oscillator-- ასე რომ, მოდით 765 00:39:38,640 --> 00:39:42,460 გავაკეთოთ დემო რომ უფლება აქ. 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 და რომ ჩვენ ვაპირებთ შევქმნათ ჩვენი Oscillator. 769 00:39:54,350 --> 00:39:58,620 ასე რომ, კიდევ ერთხელ, ჩვენ უბრალოდ ვაპირებ მოვუწოდო შექმნა Oscillator. 770 00:39:58,620 --> 00:40:07,030 ჩვენ ვაპირებთ, რომ მითითებული სიხშირე რომ, 440 ჰერცი, ყველას საყვარელი. 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 >> HUGH Zabriskie: აქ ჩვენ მივდივართ. 776 00:40:24,980 --> 00:40:25,940 ეს არის უბრალოდ sine ტალღა. 777 00:40:25,940 --> 00:40:26,440 OK, მაგარი. 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 >> HUGH 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 ასე რომ, fun რამ უნდა ითამაშოს გარშემო. 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 GREEN: ჩვენ არ ვიფიქროთ, რომ, ჩვენ არ? 790 00:40:48,792 --> 00:40:50,500 HUGH Zabriskie: ჰო, რომ არის nasty ერთი. 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 თქვენ შეგიძლიათ გამოიყენოთ ვებ-აუდიო ფილტრაცია გაგვაჩნია. 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 სროლა მთელს ეკრანზე, თქვენ შეგიძლიათ გამოიყენოთ არხები აუდიო 805 00:41:36,090 --> 00:41:39,770 შეიქმნას ამ ტიპის დაყვანილი, რომელიც მოსწონს ეს საკმაოდ mathy, 806 00:41:39,770 --> 00:41:41,850 მაგრამ ეს რეალურად მაგარი, თუ თქვენ მუშაობს, 807 00:41:41,850 --> 00:41:44,500 და იქ კარგი გაკვეთილები ის მე გამოგიგზავნით. 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 ეს ადგენს მოცულობა Oscillator, ასე რომ, ჩვენ შევქმნათ ჩვენი oscillator 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 და შემდეგ დაკავშირება oscillator რომ GainNode, რომელიც მაშინ ძირითადად იცვლება 816 00:42:14,170 --> 00:42:16,760 რამდენად სიგნალი ნებადართულია მეშვეობით. 817 00:42:16,760 --> 00:42:20,467 მაგრამ რეალურად, ეს არის ციფრული რამ, ასე, რომ ეს უფრო just-- yeah. 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 HUGH Zabriskie: ბოდიში? 822 00:42:28,174 --> 00:42:30,360 აუდიტორია: ეს არის quantized მოცულობა პარამეტრი? 823 00:42:30,360 --> 00:42:31,840 HUGH 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 ასე რომ, yeah. 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-- და ნულოვანი არის სიგნალი, ან თქვენ არ გაუგია sound. 833 00:42:59,690 --> 00:43:03,150 ჩვენ გამოტოვოთ დემო დრო, რომ იმის გამო, რომ ეს, ძირითადად, რა გავაკეთე ადრე. 834 00:43:03,150 --> 00:43:07,630 ისევ და ისევ, Context.Destination არის აუდიო დანიშნულების კვანძის. 835 00:43:07,630 --> 00:43:08,360 გასაოცარია, OK. 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 >> HUGH 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 >> HUGH 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 >> ასე რომ, ეს ბიჭი, ბორის Smus დაწერა ნამდვილად სასარგებლო პატარა ინსტრუმენტი მოუწოდა 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 GREEN: მასივი. 861 00:44:12,160 --> 00:44:14,201 HUGH 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 ეს არის უკუგამოძახება ჩვენ ვსაუბრობთ შესახებ ასინქრონული loading. 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 ასე რომ, რა გავაკეთო როცა დასრულდება loading არის, უბრალოდ 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 >> ზემოთ, ასე რომ ვნახოთ ეს მოხდება მოქმედებაში. 881 00:45:21,660 --> 00:45:24,490 ჩემი [INAUDIBLE] აქ, ვნახოთ. 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 მაგრამ ეს მხოლოდ იწყება სერვერზე port 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 [მუსიკა - არწივები "ცხოვრების სწრაფი  LANE "] 893 00:45:55,880 --> 00:46:00,490 --which ხდება, რომ "ცხოვრება სწრაფი Lane "მიერ Eagles. 894 00:46:00,490 --> 00:46:06,346 ახლა, მე ვერ მოხვდა "Stop ჩემი საყვარელი სიმღერა "და მოთხრობა იგი. 895 00:46:06,346 --> 00:46:09,160 >> [მუსიკა - არწივები "ცხოვრების სწრაფი  LANE "] 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 >> [მუსიკა - რიკ Astley, "არასოდეს Gonna მისცეს  თქვენ UP "] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [მუსიკა - არწივები "ცხოვრების სწრაფი  LANE "] 907 00:46:44,215 --> 00:46:46,195 ჩვენ ახლა ყველანი უკვე Rickrolled. 908 00:46:46,195 --> 00:46:50,155 OK, დიდი, მოძრავი. 909 00:46:50,155 --> 00:46:51,160 ზემოთ. 910 00:46:51,160 --> 00:46:54,554 ასე რომ, ეს არის, ძირითადად, მაგალითად, უბრალოდ, თუ როგორ შეიძლება ჩატვირთვა MP3 ფაილი 911 00:46:54,554 --> 00:46:56,470 [მუსიკა - არწივები "ცხოვრების სწრაფი  LANE "] 912 00:46:56,470 --> 00:46:59,590 --and ითამაშოს, და შეწყდეს და დაიწყოს იგი. 913 00:46:59,590 --> 00:47:03,008 მე შეიძლება გაკეთდეს გაცილებით მეტი [INAUDIBLE] 914 00:47:03,008 --> 00:47:07,570 >> ბოლო ერთი გავაკეთებ არის, მე გაჩვენებთ [INAUDIBLE]. 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 >> [მუსიკა - რიკ Astley, "არასოდეს Gonna მისცეს  თქვენ UP "] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> OK, დიდი. 924 00:47:36,500 --> 00:47:37,625 მე არ უნდა თქვა, რომ. 925 00:47:37,625 --> 00:47:40,570 ყოველ შემთხვევაში, hello. 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 up on ფორტეპიანო ბოლოში. 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 >> HUGH Zabriskie: ეს არის G ზემოთ Middle C, რომ უფლება. 936 00:48:11,840 --> 00:48:12,470 >> აუდიტორია: Above ახლო C. 937 00:48:12,470 --> 00:48:13,345 >> HUGH Zabriskie: ჰო. 938 00:48:13,345 --> 00:48:14,340 სინამდვილეში, დიახ. 939 00:48:14,340 --> 00:48:16,131 მე ვფიქრობ, რომ რეალურად გააკეთა ის ერთ-ერთი [INAUDIBLE], 940 00:48:16,131 --> 00:48:18,860 ასე რომ, ეს შეიძლება იყოს octave ზემოთ რომ. 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 [განმეორებადი PIANO შენიშვნა] 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 ასე რომ, თუ მე ახვიდეთ და down ჩემს კლავიატურაზე, თქვენ 947 00:48:27,510 --> 00:48:31,550 შეიძლება დავუბრუნდეთ წინა ბრძანებები, რომელიც საკმაოდ სასარგებლო. 948 00:48:31,550 --> 00:48:35,136 და ქვემოთ არის ჩემი სია სიმღერები, რომლებიც ყველა გაშვებული loop. 949 00:48:35,136 --> 00:48:38,260 >> აუდიტორია: თქვენ, რა თქმა 88-გასაღები კლავიატურის, არა? 950 00:48:38,260 --> 00:48:41,051 >> HUGH 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 რომელიც რეალურად loop რომელიც გამოიყურება მოსწონს ეს დღითიდღე ითამაშა loop, 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 შესანახად ბუფერული წელს source.buffer. 961 00:49:10,550 --> 00:49:13,160 მე ვაძლევ მას მომატება, I დაკავშირება ის მომატება, 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 >> აუდიტორია: შეგიძლიათ რეალურად მიიღოს, რომ მშრალი ხმა და სველი [INAUDIBLE]? 965 00:49:24,820 --> 00:49:26,260 >> HUGH Zabriskie: თქვენ შეგიძლიათ, yeah. 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 >> ასე რომ, მე დასრულდება დემო აქ გადმოგცეთ გრძნობა 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-- ძირითადად რა იმას, რომ ეს არის ნამდვილად 974 00:49:59,110 --> 00:50:04,220 სახის რთული სინტაქსი, მაგრამ ეს აპირებს გენერირება შენიშვნები on the fly, 975 00:50:04,220 --> 00:50:06,601 და უბრალოდ დაუკარით მათ ის აფასებს მათ. 976 00:50:06,601 --> 00:50:07,392 [INTERPOSING 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 [INTERPOSING 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 იგი იღებს იმ სამ შენიშვნები საფორტეპიანო და შემდეგ აყენებს მათ B3. 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 >> მე შეგიძლიათ kick drum. 987 00:50:56,551 --> 00:50:57,050 მე შემიძლია-- 988 00:50:57,050 --> 00:50:58,048 >> [INTERPOSING ინსტრუმენტები] 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 [INTERPOSING ინსტრუმენტები] 993 00:51:14,515 --> 00:51:15,513 ეს ერთი პატარა უფრო შემაშფოთებელი. 994 00:51:15,513 --> 00:51:16,554 [INTERPOSING ინსტრუმენტები] 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 [INAUDIBLE]. 998 00:51:31,481 --> 00:51:32,522 >> [INTERPOSING ინსტრუმენტები] 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 [INTERPOSING ინსტრუმენტები] 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 [INTERPOSING ინსტრუმენტები] 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 ზოგიერთი რამ, რაც შეიძლება ავაშენოთ ვებ აუდიო 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 ასე რომ კიდევ ერთხელ, რაიმე კითხვა გაქვთ, ელ myself-- Hugh-- ან Sam, 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 HUGH 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 API, 1022 00:53:18,950 --> 00:53:22,030 თქვენ შეიძლება ალბათ გამოძებნოს hacks, მაგრამ ზოგადად არა როგორც შესაძლებელი. 1023 00:53:22,030 --> 00:53:25,300 >> SAM GREEN თქვენ შეგიძლიათ also-- ყველა Chrome იცის 1024 00:53:25,300 --> 00:53:28,820 არის ის, რაც თქვენი default მიკროფონი არის, და ეს იღებს, რომ. 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 HUGH Zabriskie: ეს არის კარგი წერტილი. 1028 00:53:37,490 --> 00:53:39,656 მე არასოდეს ცდილობდა, მაგრამ თქვენ შეძლებთ სახის 1029 00:53:39,656 --> 00:53:45,700 of-- თუ გადამისამართება შეყვანის სპიკერი, თქვენ შესაძლოა, რომ გავაკეთოთ, yeah. 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 GREEN: მე ვარ სემ. 1035 00:53:52,990 --> 00:53:55,410 HUGH Zabriskie: ეს არის CS50. 1036 00:53:55,410 --> 00:53:56,767