[MUSIC PŘEHRÁVÁNÍ] SPEAKER 1: No, jsme tady, poslední P set v CS50. Gratuluji sami od s tak daleko od své první ahoj světy a tisk z pyramidy Mario. Udělal jsi webové stránky minulý týden. A my bude dělat jiný tento týden, ten, který vám umožňuje jezdit na Harvard areálu, vybírání nahoru zaměstnanci CS50, a přivést je zpět k jejich obytné domy. Teď minulý týden jsme pracovali v PHP, side jazyk serveru. V tomto p Nastavte, budeme se představil JavaScriptu, který je na straně klienta jazyka. Takže pojďme se podívat na některé z Distribuce kód, který se připravili můžete pro tento P sadu. Ve složce JavaScript, bude tam být banda souborů JavaScript. K dispozici je buildings.js, která obsahuje řada budov po celém Harvardu kampus, s jejich informací a pozice. Houses.js je řada Harvardu obytných domů, s jejich zeměpisné šířky a délky. Passengers.js obsahuje řada cestujících - se zaměstnanci CS50 - že budete dobývat do jejich obytné domy. Math3D.js, že obsahuje velké množství Funkce dělat s pohybem. Pokud jste matematicky smýšlející, pak vítám vás podívat. Ale nemusíte rozumět všechno, co tam je. Shuttle.js, která se zabývá pohyb raketoplánu. A index.html je domovská stránka, kde všechno, co se děje, opravdu, kde uživatel interakci s webem. Service.css je CSS stylů, , které, kromě Twitter Bootstrap knihovna, kontroly jak index.html vypadá. A pak tu máme také service.js, které obsahuje servisní funkce pro kyvadlová doprava. A tady je místo, kde budete mít vyplnění některých DOS. Nyní se pojďme podívat na objekty a asociativní pole v JavaScriptu, který pro všechny záměry a účely, jsou zaměnitelné. Kdybych chtěl, aby se objekt proměnnou volal hůlka, bych prohlásit ji. A uvnitř těchto složených závorkách bych určit jádro je jednorožec. Dřevo je třešeň. A délka je 13. Nyní mohu také přístup k hodnotám objektů pomocí asociativní pole notace. Takže hůlka index jádro, lze nastavit která se rovná jednorožec, nebo zkontrolujte, zda, když budu potřebovat. Nebo mohu použít operátoru tečka. Wand tečka dřevo rovná třešeň, a tak dále, a tak dále. Takže vidíte, že asociativní pole a objekty v JavaScriptu se bude zaměnitelné, a bude přijde docela vhod. Pak vidíme řadu domů v buildings.js. Opět platí, že pole objektů. Pokud bych chtěl udělat celou řadu nejlepších stavby na Harvard akademické půdě, pak Chtěl bych, aby to takto. Pomocí tohoto objektu zápis, pokud I uložit kořenový, jméno, adresa, šířky a délky pro každý jeden objekt objekt. Pojďme rychle mluvit o proměnných v JavaScriptu. Stejně jako PHP, JavaScript proměnné jsou slabě nebo volně zadali. Chcete-li vytvořit lokální proměnné, můžete prefix název proměnné s V-A-R, var. Nyní v JavaScriptu, bude funkce omezit rozsah proměnné. Takže pokud máte lokální proměnné v rámci funkce, pak další funkce Nelze přistupovat. Ale na rozdíl od C, smyčky a podmínky ne omezit rozsah proměnné. Takže i když se to deklarovat uvnitř stav, bude celá funkce mají přístup k němu. Nyní bez var, variabilní bude globální. Takže pokud jste právě deklarovat jméno a přiřadit hodnotu, pak tato proměnná bude globální proměnné v JavaScriptu. Nyní v domech, máme asociativní Pole typu domu objektů, kde každý dům je jen šířka a délky. Pak máme cestující pole, což je pole typu objektu cestujícího. Takže každý cestující má jméno, Název a dům. Všimněte si, že jsem viděl typu cestujících, což ve skutečnosti znamená jen že každý objekt má Stejná hodnota dvojice klíč. Takže každý objekt typu cestujících má uživatelské jméno, název a dům. Takže to, co potřebujeme, aby udělat pro sadu P? No, musíme umožnit uživatelům vybrat nahoru zaměstnanců, zobrazit všechny se zaměstnanci, které jsou v současné době naše kyvadlová doprava, a je odjet. A pak budeme také mluvit o další funkce, které mohou být realizovány na P set kyvadlová doprava. Ale pojďme mluvit o vyzvednutí první. Tváře CS50 zaměstnanci byli zasadil po celém areálu, kde každý obličej je implementován jako místo značka na 3D zemi, a jako značka na 2D mapě. Takže, když uživatel klepne na pickup tlačítko, chceme přidat poblíž cestující do raketoplánu. A také chceme odstranit své místo označit ze světa, a odstranit jejich značka z mapy, což naznačuje, že jsou v našem raketoplánu nyní. Tak jak jsme se zjistit, zda cestující jsou v dosahu našeho raketoplánu? No, vzdálenostní funkce - takže raketoplán tečka vzdálenost, předáním zeměpisné šířky a délky, bude vypočítat vzdálenost od proudu poloha dopravu do bodu, který určíte, že se vzhledem k zeměpisné šířky a délky. Takže můžete použít k výpočtu vzdálenost od raketoplánu, aby cestující. Ale jak víte, kde cestující jsou? No, to je místo, kde budeme muset upravit funkci naplnit. Naplnit umístí všechny zaměstnance a cestující do světa, a do mapy, ale není uložit jejich umístění. Takže možná si můžete uložit své místo známky a značky v některých globálním poli. Nyní již existuje globální pole ukládání informací od cestujících. Obchody Cestující pole každý Jméno cestujícího a jejich dům. Takže možná, můžete přidat pár parametrů tam objekty pro cestující. Chcete-li nám pomoci odhalit všechny cestující v dosahu našeho raketoplánu, pojďme smyčka přes všechny cestující v poli cestující. Pro smyčky v JavaScriptu může vypadat něco takového, velmi podobné těch, pro smyčku v C. Nebo můžeme použít alternativou pro konstrukci smyčky. Pro var i v poli, kde jsem bude stále index. Ale nemusíte specifikovat délka pole tečka stav, a já plus plus. Umístění Každý cestující je vzhledem k jejich místo značkou. Ale místo známka není zeměpisné šířky a délky. Máme přístup k těmto parametry získání geometrie, pomocí get geometrie na místě značku. A pak, jakmile budeme mít geometrii, dostat buď zeměpisné šířky nebo délky, s použitím těchto funkcí. Takže teď víme, jak zjistit, zda cestující jsou v rámci Rozsah našeho raketoplánu. Jakmile budeme mít ty cestující, budeme Chcete přidat nějaké cestující, které jsou v tomto rozsahu. Chceme, aby mohli naskočit, a Posaďte se na naší raketoplánu, ale pouze pokud budeme mít dostatek prostoru pro ně. Kyvadlová doprava dot sedadla pole bude uveďte, zda sedadla jsou prázdná, nebo který je v tomto sedadle. Takže, pokud je sedadlo prázdné, pak že sídlo bude mít hodnotu null. Takže iteraci přes pole sedadla, kontrola prázdných míst, skladování cestující do těchto míst, dokud se nemají žádné další prázdná místa. A bohužel, všechny ostatní cestující bude muset počkat příště raketoplán přijde. Jakmile se dostanete na raketoplánu, budeme chtít odstranit jejich značku místa, které je jejich fotografie ve 3D světě. Pokud bych chtěl odstranit místo známky p, pak bych dostat všechny funkce z mé země, z Google Earth, a pak odstranit, že konkrétní místo označit pomocí funkce removeChild. Pak konečně, pojďme odstranit značku, ikona na 2D mapě pro jakýkoli cestujících, které jsme vyzvednout. Chcete-li odstranit marker, m, pak budu stačí spustit m dot setMap null. Udělej to pro všechny cestující v dosahu, a vy jste skončil pickup.