[音乐播放] 扬声器1:嗯,我们在这里, 在CS50最后的P组。 从有你们表示祝贺 走了这么远,因为你的第一声问候 世界上并打印出来 金字塔的马里奥。 你做了一个网站的最后一周。 而我们将要制作一个又一个 这个星期,一个可以让你 带动周边的哈佛校园里,采摘 高达CS50的工作人员,并 把他们回到自己的 民居。 现在,在上周,我们曾在PHP中, 服务器端语言。 对于这个P组,我们就要介绍 到JavaScript中,这是一个 客户端语言。 因此,让我们来看看一些 公司所提供的分销代码 你这个P组。 在JavaScript文件夹中,将有 是一堆JavaScript文件。 有buildings.js,它包含一个 哈佛周围建筑物的数组 校园里,与他们的信息 和位置。 Houses.js是哈佛的数组 住宅房屋,其 经度和纬度。 Passengers.js包含一个 乘客阵列 - 在CS50的工作人员 - 你会被带回至 他们居住的房子。 Math3D.js,它包含了很多 功能做的运动。 如果你是数学头脑, 那么我欢迎你来看看。 但你并不需要了解 一切都在那里。 Shuttle.js,与交易 航天飞机的运动。 和index.html的是主页, 一切都发生了,真的,那里的 用户互动的网站。 Service.css是CSS样式表, 其中,除了Twitter的 引导程序库,控制 如何index.html的样子。 然后我们也有service.js,这 包含服务功能 穿梭。 下面是你要去的地方是 填写一些到DOS。 现在让我们来看看对象和 关联数组在JavaScript中, 这对于所有意图和目的 是可以互换的。 如果我想使一个对象的变量 所谓的魔杖,我会 声明它。 和那些大括号我会内 指定核心是麒麟。 木材是樱花。 和长度为13。 现在我也可以访问值 使用对象 关联数组表示法。 所以魔杖指数的核心,我可以设置 这等于麒麟,或 检查,如果我需要。 或者,我可以使用点运算符。 魔杖点木等于樱桃, 等等,等等。 所以你看到,关联数组和 在JavaScript对象都将是 互换和意志 进来很方便。 然后,我们看到建筑的数组 在buildings.js。 再次,对象的数组。 如果我想做出最好的一个数组 在哈佛校园的建筑物,然后 我想使它成为如下。 使用此对象表示法,其中 我存储的根,名称,地址, 纬度,经度和每 单体建筑对象。 让我们快速谈谈变量 在JavaScript中。 像PHP,JavaScript变量 是弱或松散类型。 要创建一个局部变量,你前缀 变量名与V-A-R,变种。 现在,在JavaScript中,函数会 限制变量的范围。 因此,如果你在有一个局部变量 一个函数,那么其他功能 不能访问它。 但是,与C,循环和条件不 限制变量的范围。 所以,即使你的内声明它 条件,整个功能将 可以访问它。 现在还没有变种,变 将是全球性的。 所以,如果你只需要声明的名称和 指定一个值,则该变量 将是一个全局变量 在JavaScript中。 现在的房子,我们有一个关联 房子类型对象的数组,其中 每一个房子只是一个纬度 和经度。 那么我们有乘客 阵列,它是一个数组 的对象类型的乘客。 所以,每一位乘客都有一个用户名, 一个名字,和一所房子。 请注意,我看到的类型 乘客,这真的只是意味着 每个对象都有 同样的键值对。 所以型乘用车的每一个对象都有 一个用户名,一个名称和一个房子。 那么,我们需要 这样做对于P组? 好了,我们需要允许用户选择 了工作人员,以显示所有的 工作人员目前正在 我们的班车,并把它们关闭。 然后,我们也将讨论额外的 给可实现的功能 穿梭P设置。 但是,让我们来谈谈皮卡第一。 CS50工作人员的面孔已经 种满校园,其中每个 脸是作为一个地方标志 的三维地球上,作为一个 标记的2D地图上。 因此,当用户单击拾取 按钮,我们希望附近的加 乘客穿梭。 我们也想删除自己的位置 来自世界纪念,并删除其 标记从地图上看,这表明 他们在我们的班车了。 那么,我们如何检测,如果乘客 都在我们的航天飞机范围是多少? 当然,函数距离 - 所以班车点距离,传递 纬度和经度,将 计算从当前的距离 穿梭到的位置 点那个你指定 给定的纬度和经度。 所以,你可以用它来计算 距离从航天飞机到 乘客。 但你怎么知道在哪里 乘客是? 嗯,这就是我们必须 编辑填充功能。 填充所有地方的工作人员 和乘客走向世界, 并进入地图,但不 存储他们的位置。 因此,也许你可以存储自己的 放置标记和标记 在一些全局数组。 现在已有了一个全局数组 乘客存储信息。 每个乘客阵列存储 乘客的姓名和他们的房子。 所以也许你可以添加一些参数 有给乘客的对象。 为了帮助我们检测到所有的乘客 在我们穿梭范围,让我们 通过所有的乘客循环 在乘客阵列。 for循环在JavaScript看起来 这样的事情,非常相似, 这些循环在C或者,我们可以使用一个 替代for循环结构。 对于数组变种我,我在那里 将仍然是指数。 但你并不需要指定 数组长度点 状态,我加再加。 每一个乘客的位置是 通过他们的地方得分。 但这个地方标志是不 纬度和经度。 我们必须通过访问这些参数 获得的几何形状,使用get 几何上的地点标记。 然后一旦我们有几何, 让无论是纬度或 经度,使用这些功能。 所以,现在我们知道如何检测是否 乘客都在 我们的范围内穿梭。 一旦我们有了这些乘客,我们将 要补充的是,任何乘客 内的范围。 我们希望,让他们跳,并 坐我们的班车,但只有 如果我们有足够的空间给他们。 班车点的座位阵列将 表示座位是否是空的,或 谁在那个位子。 所以,如果一个座位是空的,那么 那个座位将为null。 所以遍历数组席位, 检查空座位,存储 乘客进入这些席位,直到你 没有任何更多的空座位。 不幸的是,其他乘客 将必须等待 下一次航天飞机恶有恶报。 一旦他们穿梭取得联系,我们会想 删除自己的位置标记,它 是他们的照片在3D世界中。 如果我想删除一个地方标记P, 然后我会得到所有的功能 从我的地球,从谷歌地球, 然后删除特定的地方 标记使用removeChild功能。 那么最后,让我们删除标记, 在二维地图上的任何图标 乘客,我们正在加快。 要删除标记,M,然后我会 只是执行米点setMap空。 这样做有效范围内的任何乘客, 你已经完成了皮卡。