[Музички] ЗВУЧНИК 1: Па, тука сме, последните P сет во CS50. Честитам себе од тоа да имаат дојде толку далеку, бидејќи вашиот прв здраво светови и печатење пирамиди за Марио. Сте го направиле веб-сајт минатата недела. И ние ќе треба да се прави уште еден оваа недела, оној кој ви овозможува да се вози наоколу во кампусот на Харвард, подигање до CS50 членови на персоналот, како и се зближуваа назад кон нивните станбени куќи. Сега минатата недела работевме во PHP, на серверот јазик. За оваа P сет, ние сме добивање воведе да JavaScript, што е клиентската страна, јазик. Па ајде да ги разгледаме во некои од дистрибуција код кој е предвидено да вас за ова, P сет. Во вклучите Javascript-папка, ќе има биде еден куп на JavaScript датотеки. Има buildings.js, која содржи низа на згради околу Харвард кампусот, со нивните информации и позиција. Houses.js е низа од Харвард станбени куќи, со нивните ширини и должини. Passengers.js содржи низа на патници - на CS50 членови на персоналот - дека ќе се носат назад кон нивните станбени куќи. Math3D.js, која содржи многу функции да се направи со движењето. Ако сте математички ум, тогаш јас ви посакам добредојде да ги разгледаме. Но, вие не треба да се разбере се таму. Shuttle.js, која се занимава со движење на шатлот. И index.html е почетната страница, каде сè се случува, навистина, каде што корисникот е во интеракција со сајт. Service.css е CSS стилот на состојба, кој, во дополнение на Twitter Bootstrap библиотека, контроли како index.html изгледа. А потоа ние исто така имаат service.js, која содржи услужни функции за шатл. И тука е местото каде што можете да одиш за да пополнување на некои од ДОС. Сега ајде да ги разгледаме во објекти и асоцијативни низи во JavaScript, која за сите намерите и целите се еквивалентни. Ако сакав да направите објект променлива наречен стапче, јас би ја прогласи. И во оние големи загради јас би наведете јадрото е еднорог. Дрвото е цреша. А должината му е 13. Сега јас исто така да пристапите вредности на објекти користење асоцијативна низа нотација. Па стапче индекс јадро, можам да го поставите дека еднаква на еднорог, или проверете дали, ако ми треба. Или јас да го користите оператор точка. Стапче точка дрво еднаква на цреша, и така натаму, и така натаму. Па ќе видите дека асоцијативни низи и објекти во вклучите Javascript-се случува да бидат меѓусебно, и волја доаѓаат во прилично корисна. Тогаш можеме да видиме низа на згради во buildings.js. Повторно, низа од објекти. Ако сакав да се направи низа од најдобрите објекти на кампусот на Харвард, а потоа Јас ќе го направи тоа како што следува. Со користење на овој објект нотација, каде Јас чување на корен, име, адреса, ширина, и должина за секоја една зграда објект. Ајде брзо се зборува за варијабли во JavaScript. Како PHP, JavaScript променливи се слабо или лабаво отчукува. Да се ​​создаде локална променлива, можете префикс променлива името со V-A-R, var. Сега во JavaScript, функции ќе ограничи обемот на променливи. Значи, ако имате локална променлива во функција, а потоа другите функции не може да дојде до неа. Но, за разлика Ц, јамки и услови не ограничи обемот на променливата. Па дури и ако тоа прогласи внатрешноста на состојба, целата функција ќе имаат пристап до неа. Без var, променливата ќе бидат глобални. Значи, ако сте само го прогласи име и доделите вредност, тогаш таа променлива ќе биде глобалната променлива во JavaScript. Сега во куќи, имаме асоцијативна низа од куќа тип објекти, каде што секоја куќа е само географска ширина и должина. Тогаш имаме патници низа, која е низа на објектот тип патник. Така што секој патник има корисничко име, име, и куќа. Забележите дека јас гледам на тип патници, кои, навистина, само значи дека секој објект има истиот клуч вредност пар. Така што секој објект од тип патникот има корисничко име, име, и куќа. Значи она што ние треба да се направи за P собата? Па, ние треба да им овозможи на корисниците да ги собереш до членовите на персоналот, да се прикаже и сите членови на персоналот кои се моментално во нашите шатл, и да ги заспивам. А потоа ние, исто така, ќе зборуваме за дополнителни карактеристики кои може да се спроведе за шатлот P сет. Но, ајде да зборуваме за пикап во прв план. Лицата на CS50 кадар се засадени низ целиот кампус, каде што секој лице се спроведува како место марка на 3D земјата, и како маркер на картата 2D. Па кога корисникот ќе кликне на пикап копчето, ние сакаме да го додадете во близина патници до шатлот. И ние исто така сакаме да се отстрани нивното место марка од целиот свет, и да ги отстрани нивните маркер од мапата, што покажува дека тие се во нашата шатл сега. Така како ние да се открие ако патници се во рамките на опсегот на нашите шатл? Па, функцијата далечина - па шатл точка далечина, поминува во географската ширина и должина, ќе пресмета оддалеченоста од сегашните позиција на трансфер на точка што ќе се определи со кои со оглед на географската ширина и должина. Па можете да го користите овој да се пресмета оддалеченост од шатл до патници. Но како да знам каде патниците се? Па, тоа е каде што ќе треба да се уредување на населуваат функција. Доверат места сите на членови на персоналот и патниците во светот, и во мапата, но не го прави складирање на нивната локација. Па можеби ќе може да се сместат нивните место марки и маркери во некои глобалната низа. Сега има веќе е глобален низа складирање на информации од патниците. Патниците низа продавници секоја име на патници и нивната куќа. Па можеби можете да додадете неколку параметри има на патникот објекти. Да ни помогне да детектира сите патници во рамките на опсегот на нашите шатл, да поминете сите патници во патници низа. А за телефонска линија во JavaScript може да изгледа нешто како ова, многу слична на оние за јамка во C. Или може да се користат алтернатива за јамка структура. За var i во низа, каде што се уште ќе биде во индексот. Но, вие не треба да го одредите должина на низата точка состојба, и јас плус плус. Локација секој патник е дадена од страна на нивното место марка. Но местото знак не е географска ширина и должина. Имаме пристап до оние параметри од добивање на геометријата, со користење добие геометријата на местото марка. А потоа еднаш имаме геометрија, добивање или географската ширина или должина, користење на овие функции. Така, сега знаете како да се открие дали патници се во рамките на Опсегот на нашата шатл. Откако ќе имаат оние патници, ние ќе сакате да го додадете патници кои се во рамките на тој опсег. Ние сакаме да им се дозволи да хоп на, и седнете на нашиот шатл, но само ако имаме доволно простор за нив. Шатлот точка места низа ќе укажуваат на тоа дали седишта се празни, или кој е во тоа место. Значи, ако седиштето е празен, тогаш дека седиштето ќе биде нула. Па iterate во текот на седишта низа, проверка за празни места, чување патници во оние места додека не немаат повеќе празни места. И, за жал, било другите патници ќе мора да почека за Следниот пат кога шатлот доаѓа околу. Откако тие се на шатлот ќе сакаме за да го отстраните место марка, која е нивната слика во 3D свет. Ако сакав да се отстрани место марка p, тогаш јас би ги добиете сите од карактеристиките од мојата земја, од Google Earth, а потоа ја отстрани таа одредено место означи со користење на removeChild функција. Тогаш на крај, ајде да се отстрани маркер, иконата на мапата 2D за било патнички дека ние сме подигање. За отстранување на маркер, m, а потоа јас ќе само извршување m точка setMap нула. Дали ова за сите патници во Вашиот опсег, и ќе завршите со пикап.