首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
PowerPC
» 使用 Node.js 和 dashDB 服务开发一个公共交通系统模拟器(3)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
使用 Node.js 和 dashDB 服务开发一个公共交通系统模拟器(3)
发短消息
加为好友
look_w
当前离线
UID
1066743
帖子
8283
精华
0
积分
4142
阅读权限
90
在线时间
233 小时
注册时间
2017-6-23
最后登录
2019-5-18
论坛元老
UID
1066743
1
#
打印
字体大小:
t
T
look_w
发表于 2018-6-23 10:26
|
显示全部帖子
使用 Node.js 和 dashDB 服务开发一个公共交通系统模拟器(3)
步骤 3. 执行 JavaScript 对象的后端开发后端代码位于 bussimulator/public/js/controller.js 文件中。它很简单,包含在前端中使用的代码和对象,在下一个步骤中会详细介绍这一部分。下图显示了 controller.js 的一个简单的类图。
该代码包含五个对象:Line、Stop、Bus、Person 和 Event。该系统以面向对象的方式进行开发,使之更容易理解其代码内部所发生的事情,并对系统内部的元素和对象提供更好的控制。
Line
对象包括变量和一个
reset
函数。此对象表示公交车的实际路径。每一个 Line 都有一个
stop
对象数组和一个
bus
对象数组。一个 Line 必须有一个
interval
,它存储公交车出发时间之间的时间间隔。在新建一个 Line 时,必须提供一个
id
、一个
name
和一个
interval
作为参数,例如,var line1 = new Line(001, "Bloor St", 20)。在后端,代码看起来像下面的清单。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var Line = function(id, name, interval){
this.id = id;
this.name = name;
this.interval = interval;
this.stops = [];
this.buses = [];
this.onSim = false;
}
this.reset = function(){
this.onSim = true;
for (var i = 0; i < this.buses.length; i++)
this.buses
.reset();
}
}
在添加一个新的 Line 之后,下一步是将
stops
添加至该 Line。
Stop
对象存储一个
id
、
name
、
location
和
passengers。
以百分比定义每一个 stop 的位置。例如,如果一个
Line
有三个
Stops
,第一个 stop 将是位于 Line 大小的 0%,第二个 stop 位于 Line 的 50%,最后一个位于 Line 的 100%。
passengers
变量是存储
Person
对象的数组,它提供每位乘客的始发地和目的地。
1
2
3
4
5
6
7
8
9
10
11
12
var Stop = function(id,name){
this.id = id;
this.name = name;
this.location = undefined; //in %
this.passengers = [];
/* Show people at stop */
this.showPeople = function(){
$("#stop_" + this.id + "_people")
.html(this.passengers.length);
}
}
对象
bus
包含有关乘客、当前线路、当前车站及其最大容量的信息。同样,
passengers
数组负责存储
Person
对象,
reset
函数负责停止公交车,并将公交车返回其起始位置,即第一站。它包含了其他许多方法,比如
changeColor、showPeople、addPeople
等等,这些都在每个函数上方的注释中进行了说明。
Event
对象的工作类似于模拟器的时间表。这个对象获得一个时间、一个动作和一个公交车。例如,假设您想在五秒钟后将一条线路的首班车从一站移到另一站。此事件的代码是 new Event("00:05", goToNextStop, line.buses[0]) - ,其中 line.buses[0] 就是要移动的公交车,它链接到一条线路。
简单看看代码的其余部分,就可以了解对象是如何链接的,以及前端是如何使用对象的。controller.js 是模拟器的基础。在开始开发前端代码之前,您需要理解它。您可以从我们的 DevOps Services 存储库中下载完整的代码。
步骤 4. 对 Bootstrap 和 jQuery API 执行前端开发 框架用于前端开发。 用于在模拟器上的效果和动画。
公交车模拟器界面分为三个主要部分:画布、计时器和侧边栏。画布上显示线路和公交车。用
Start
、
Pause
和
Stop
按钮可以控制在右上角的计时器。在侧边栏中,可以添加线路和人员,还可以看到一些模拟信息。
要将线路添加到模拟器,请进入
Line
选项卡。它们上方的小圆圈和数字代表车站,以及在每个车站有多少人。在它们里面的小方块和数字代表公交车,以及每辆公交车内的人数。如果需要从模拟器中删除一条线路,请单击在线路名称旁边的
X
。
如果需要在模拟器中将人添加到公交线路上的每个车站,请转到
People
选项卡。您可以通过单击它改变该线路每个部分的流量。要查看每辆公交车的信息(比如乘客人数、当前车站和到达下一站的时间),请单击公交车。
单击
Start
开始模拟。您可以在
Home
选项卡上跟踪模拟事件。它显示了事件列表,包括时间和每辆公交车的动作。您可以暂停、恢复和停止模拟,也可以添加更多线路,或者从模拟器中删除线路。
在本例中,动画是以一个事件列表为基础的。每个事件都与时间、公交车及将要采取的具体行动有关。在将一条新线路添加到画布上时,这条新线路的每辆公交车都分配了一个发车时间,并且这些事件都被放在事件列表上。当模拟开始时,系统会开始检查,以确定模拟器的时间是否等于第一个事件的时间。如果时间相等,则执行该事件的动作,并调度该公交车的下一个事件。
这两个动作是去下一站,并返回到终点。对于第一个动作,公交车要在其当前车站停留一些时间,因为人们要上下车。在这之后,它开到下一站。速度取决于这一段线路上的交通。第二个动作发生在公交车到达最后一站的时候。它停留在该站,所有人都下车,然后它又回到终点。
为了将样式和动画添加到您的应用程序,将以下文件复制到您的项目,并复制 css 和 js 文件夹中的 Bootstrap 和 jQuery 文件,保持目录结构:
bussimulator/public/css/style.css
bussimulator/public/js/animation.js
bussimulator/views/index.ejs
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
MCU 单片机技术
电源与功率管理
DSP技术
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议