>> [Muusika mängib]
>> SPEAKER 1: Noh, siin me oleme, Viimase P seatud CS50.
End õnnitleda omamast jõudnud nii kaugele, sest oma esimese tere
maailmad ja printimisest püramiide ​​Mario.
Sa tegid veebilehel eelmisel nädalal.
Ja me teeme veel ühe Sel nädalal, üks, mis võimaldab teil
sõita ringi Harvard campus, korjamine üles CS50 töötajad ja
viies need tagasi oma elumajad.
>> Nüüd viimasel nädalal tegime PHP, serveripoolne keel.
Sel P komplekt, me lähme sisse JavaScript, mis
kliendi poolel keeles.
Võtame pilk mõned jaotus kood, mis on sätestatud, et
teid selle P komplekti.
>> In JavaScript kausta, siis hunnik JavaScript failid.
Seal buildings.js, mis sisaldab array hoonete ümber Harvard
campus, oma andmed ja positsioon.
Houses.js on massiivi Harvard elamute, nende
pikkus-ja laiuskraadid.
Passengers.js sisaldab hulga reisijaid -
CS50 töötajad -
et sul tuleb tuua tagasi nende elumajad.
>> Math3D.js, mis sisaldab palju funktsioonid pistmist liikumine.
Kui oled matemaatiliselt mõtlemisega, siis mul on hea meel te võtate pilk.
Aga sa ei pea aru kõik on seal.
Shuttle.js, mis tegeleb süstik liikumine.
Ja index.html on kodulehekülg, kus kõik juhtub, tegelikult, kui
kasutaja suheldes kohas.
>> Service.css on CSS stiili lehed, mis lisaks Twitter
Bootstrap raamatukogu kontroll kuidas index.html välimus.
Ja siis on meil ka service.js, mis sisaldab teenustegevusega
buss.
Ja siin on koht, kus sa lähed, et olla täites mõned DOS.
>> Nüüd võtame pilk objektid ja assotsiatiivne massiivid JavaScript,
mis kõik kavatsused ja eesmärkidel on omavahel vahetatavad.
Kui ma tahtsin teha objekti muutuja nimetatakse võlukepp, ma
kuulutada.
Ja sees need looksulg oleksin täpsustada tuum on ükssarvik.
Puit on kirss.
Ja pikkus on 13.
>> Nüüd ma saan kasutada ka väärtused objekte kasutades
assotsiatiivne massiiv märke.
Nii võlukepp index tuum, ma ei saa määrata mis võrdub ükssarvik või
kontrollige, et kui mul on vaja.
Või saan kasutada dot operaator.
Wand dot puit võrdub kirss, ja nii edasi, ja nii edasi.
Nii et näete, et assotsiatiivne massiivid ja objektid JavaScript ei kavatse olla
vahetatavad, ja tulevad üsna mugav.
>> Siis näeme hulgaliselt hooneid aastal buildings.js.
Jällegi massiivi objektid.
Kui ma tahtsin teha massiivi parim hoonete Harvard loengusse, siis
Ma teeks järgmine.
Selle objekti märke, kus Ma hoida root, nime, aadressi,
laius-ja pikkuskraad iga ühe hoone objekti.
>> Lähme kiiresti rääkida muutujad JavaScript.
Nagu PHP, JavaScript muutujad on nõrgalt või nõrgalt tipitud.
Luua kohaliku muutuja, siis eesliide muutuja nime V-A-R, var.
>> Nüüd JavaScript, funktsioonid piirata ulatust muutujad.
Nii et kui teil on kohalik muutuja funktsioon, siis muud funktsioonid
ei saa seda kasutada.
Kuid erinevalt C, silmad ja tingimused ei piirata ulatust muutuja.
>> Nii et isegi kui sa kuulutada sees tingimus, kogu funktsioon ei toimi
on juurdepääs sellele.
Nüüd ilma var muutuja on ülemaailmne.
Nii et kui sa lihtsalt tunnistada nimi ja omistada väärtus, siis see muutuja
on globaalne muutuja JavaScript.
>> Nüüd maja, meil on assotsiatiivne massiivi maja tüüp esemetega, kui
iga maja on lihtsalt laiuskraad ja pikkuskraad.
Siis on meil reisijaid massiiv, mis on massiiv
Objekti tüüp reisija.
Nii et iga reisija kasutajanime nimi ja maja.
Pange tähele, et ma näen tüüpi Reisija mis tegelikult tähendab lihtsalt
et iga objekt on sama põhiväärtus paari.
Nii et iga objekti tüüp reisija kasutaja nimi, nimi ja maja.
>> Niisiis, mida me peame teha P komplekti?
Noh, meil on vaja, et kasutajad saaksid valida üles töötajaga kuva kõik
töötajad, mis on praegu Meie buss ja tilk need ära.
Ja siis me räägime ka pildi elemente, mida saab rakendada
shuttle P komplekti.
>> Aga räägime pikap esimene.
Nägu CS50 personal on istutada kogu campus, kus iga
nägu on rakendatud koht märk 3D maakera, ja kui
SM 2D kaardi.
Nii et kui kasutaja klõpsab pikap nuppu, tahame lisada lähedal
reisijad buss.
Ja me tahame, et eemaldada oma koht märgi maailma ja eemaldada nende
markerit kaart, mis näitab, et nad on meie buss nüüd.
>> Niisiis, kuidas me avastada, kui reisijate tööraadius meie buss?
Noh, funktsioon kaugus -
nii shuttle dot kaugus, mis kulgeb laius-ja pikkuskraadid, eks
arvutada kaugus praeguse asend shuttle
punkt, et te määrate selle antud laiuskraad ja pikkuskraad.
Nii saab seda kasutada, et arvutada kaugus shuttle
reisijat.
>> Aga kuidas sa tead, kus reisijad on?
Noh, see on koht, kus me peame muuta asustada funktsioon.
Asustada kohad kõik töötajad ja reisijad maailma,
ja kaardi sisse, aga ei salvestada oma asukohta.
Nii et ehk saate salvestada oma pange märgid ja markerid
mõnel globaalne massiiv.
>> Nüüd on juba olemas globaalne massiiv teabe säilitamise reisijatelt.
Reisijate hulga kauplustes iga reisija nimi ja oma maja.
Nii et äkki saate lisada mõned parameetrid seal reisijale objektid.
>> Selleks, et aidata meil tuvastada kõik reisijad levialas meie buss, lähme
silmus läbi kõik reisijad aasta reisijate hulga.
Loop JavaScript võiks välja midagi sellist, väga sarnane
need for loop C. Või saame kasutada alternatiiv loop struktuuri.
>> Var i massiivi, kus ma ikkagi indeks.
Aga sa ei pea täpsustama massiivi dot pikkus
seisund ja ma pluss pluss.
Iga reisija asukoht on arvestades nende koht märk.
>> Aga koht ei ole kaubamärk laius-ja pikkuskraadid.
Meil on juurdepääs nende parameetrite järgi saada geomeetria, kasutades GET
geomeetria koht märk.
Ja siis, kui meil on geomeetria, saada kas laius või
pikkuskraad, kasutades neid funktsioone.
>> Nüüd me teame, kuidas kindlaks teha, kas reisijad jooksul
Valik meie buss.
Kui meil on need reisijad, me tulen soovite lisada reisijad, kes on
selles vahemikus.
Me tahame, et neil oleks võimalik hop, ja istuge meie shuttle, kuid ainult
kui meil on piisavalt ruumi nende jaoks.
>> Shuttle dot istmed massiiv märkida, kas istmed on tühi, või
kes on selle asukoht.
Nii et kui iste on tühi, siis et iste on null.
Nii Käi istmed massiiv, kontrollimine tühjad kohad, hoidmine
reisijaid need istmed, kuni olete ei ole enam tühjad kohad.
Ja kahjuks muid reisijaid ei pea ootama
Järgmine kord, buss on ringi.
>> Kui nad on shuttle, me tahame kõrvaldada nende koht märk, mis
on ka foto 3D maailmas.
Kui ma tahan, et eemaldada koht märk p, siis ma saaksin kõik funktsioonid
minu maa, Google Earth, ja eemaldab selle konkreetse koha
märgi abil removeChild funktsioon.
Siis lõpuks, olgem eemaldada marker, ikooni 2D kaardi iga
reisija, et me hoogustumas.
Eemaldamiseks marker, m, siis ma lihtsalt ellu m dot setMap null.
Kas see reisijate levialas, ja olete valmis pikap.