利用ActionScript3.0技术构建虚拟交通系统

时间:2022-04-29 02:11:35

利用ActionScript3.0技术构建虚拟交通系统

摘要:该文介绍了如何利用Flash CS3.0中的ActionScript3.0技术构建一种全新的虚拟交通系统,从而为人们提供更多的出行参照信息,以解决传统电子地图的一些弊端,并且具有一定程度上的实用性和可移植性。人们可以通过该虚拟交通系统获得更加直观的道路信息,从而可以更加方便准确的找到自己想要到达的地方。

关键词: ActionScript3.0; 虚拟交通系统;电子交通地图

中图分类号:TP37文献标识码:A文章编号:1009-3044(2011)13-3128-02

Using ActionScript3.0 Technique to Build a New Virtual Traffic System

REN Wen-xuan1,2, ZHOU Bin2

(1.Department of Computer Science and Technology,University of Science and Technology of China, Hefei 230027, China; 2.Public Experimental Center, Zhejiang Ocean University, Zhoushan 316004, China)

Abstract: This paper introduces how to use ActionScript3.0 technology to construct a new virtual traffic system, thus provide people with more travel reference information, to solve these disadvantages of traditional electronic map, and has a certain practicality and portability. People can get more intuitive information from the virtual traffic system, thus can be more convenient and accurate to find where they want to reach.

Key words:ActionScript3.0;virtual traffic system; electronic traffic maps

1 介绍ActionScript3.0

ActionScript 是一种基于 ECMAScript 的编程语言,用来编写 Adobe Flash 电影和应用程序。其最早的版本ActionScript 1.0是随着 Flash 5 一起,这是第一个完全可编程的版本。Flash 6 增加了几个内置函数,允许通过程序更好地控制动画元素。在 Flash 7 中引入了 ActionScript 2.0,这是一种强类型的语言,支持基于类的编程特性,比如继承、接口和严格的数据类型。Flash 8 进一步扩展了 ActionScript 2,添加了新的类库以及用于在运行时控制位图数据和文件上传的 API。

随着2005年4月Adobe公司对Macromedia的收购,为Flash的发展注入了强大的动力,其分别于2007年和2008年推出了以ActionScript3.0作为默认动画脚本语言的Flash CS3和Flash CS4。可以说ActionScript3.0的是ActionScript发展史上的一个里程碑,它实现了真正意义上的面向对象。ActionScript 3 .0现在为基于 Web 的应用程序提供了更多的可能性。它进一步增强了这种语言,提供了出色的性能,简化了开发的过程,因此更适合高度复杂的 Web 应用程序和大数据集。ActionScript 3 可以为以 Flash Player 为目标的内容和应用程序提供高性能和开发效率。

2 介绍交通状况以及设计的必要性

基于ActionScript3.0技术以及Flash对于矢量图制作的优势,我们可以设计出许多对实际生活和工作均有帮助的软件。近些年来随着我国经济的快速发展以及城镇化建设的逐渐加快,我国的城市交通正面临着非常严峻的考验,城市交通问题已经发展成为制约我国经济发展的一个瓶颈。如今随着私人拥有车辆的普及化,人们乘私家车到其他城市去旅游或办公已经成为非常普遍的事情。而由于城市交通状况的多变性以及各个城市交通状况的独特性,往往会使这些司机很难顺利的到达自己所要去的地方。传统的电子地图所包含的信息已经无法完全满足人们出行的需要了,需要有一款包含更多信息量的地图来帮助人们出行。

3 介绍如何使用ActionScript3.0技术实现

如何运用ActionScript3.0技术来实现,该地图可以实现的功能如下,显示实际道路上的红绿灯位置,实现车辆在城市道路上的模拟操作,显示实际道路的车道数目,提供标志性建筑和主要地点的照片。

3.1 实现汽车的控制

用键盘来控制车辆,让使用者可以通过简单的键盘操作来实现车辆的加速,减速以及转向等运动。其主要代码如下:

//设置初始的速度以及运动方向

function Car():void{

speed = 0;

this.rotation = 0;

this.addEventListener(Event.ENTER_FRAME, onFrameHandler);

}

// 以下四个函数处理四个方向的移动

public function moveUp():void{speed += 1; }

public function moveDown():void{ speed -= 0.5; }

public function moveLeft():void{ if(speed!=0){ this.rotation -= 5; }

public function moveRight():void{ if(speed!=0){ this.rotation += 5; }}

// ENTER_FRAME事件的响应函数

private function onFrameHandler(event:Event):void{

// 控制速度的上下限

if(Math.abs(speed)>8){ speed = 8;}

if(speed < -3){ speed = -3;}

// 响应键盘事件,调用不同的移动处理函数

private function onKeyDownHandler(event:KeyboardEvent){

switch(event.keyCode){

case Keyboard.LEFT:

car.moveLeft();

break;

…}

3.2 载入当地的交通地图

将当地实际的道路交通地图载入到该模拟交通地图之中,并包含详细的车道信息,以及路口处的交通信号灯等信息。所需要的核心代码如下:

//从外部载入所需要的地图

loader.load(new URLRequest("trafficmap.jpg"));

loader.contentLoaderInfo.addEventListener(PLETE,completeHandler);

//卷屏方法:当车超过屏幕中心点30像素时卷动屏幕,现设置屏幕大小为800*600

function scrollMap(e:Event):void{

var xspeed:Number = 0,yspeed:Number = 0;

if(car.x< 380){//当控制车位于屏幕中心偏左超过20像素的位置时开始卷屏

xspeed = -scrollspeed;

if(xpos

else if(car.x > 420){ //当控制车位于屏幕中心偏右超过20像素的位置时开始卷屏

xspeed = scrollspeed;

if(xpos >= scrollRange.width) xspeed =0; //当位图到达右侧边界时不卷动

}else{

xspeed = 0;

}

if(car.y

yspeed = -scrollspeed;

if(ypos

}else if(car.y>320){//当控制车位于屏幕中心偏上超过20像素的位置时开始卷屏

yspeed = scrollspeed;

if(ypos >= scrollRange.height) yspeed =0; //当位图到达下边界时不卷动

}else{ yspeed = 0; }//获得偏移量

xpos += xspeed;

ypos += yspeed;

//根据偏移量从从原始位图数据中复制所需要的位图区域

bmpMap.bitmapData.copyPixels(bmpOriginData,

new Rectangle(xpos, ypos, aSize[0],aSize[1]),

new Point(0,0))

3.3 进行碰撞设置

对所载入的地图文件做处理,将道路以外的所有信息均设为不可进入,并对主要的景点,单位,学校,医院等编入特殊代码,使得控制车辆一旦进入这些区域时,即刻显示该地点的图片信息和介绍等。所涉及的主要代码如下:

为了精确车辆的碰撞位置现将汽车的图片内部设计为如下的形状:

分别检测这四个部位有没有和道路以外的其他区域发生碰撞,其关键代码如下:

private function oncarhit():void{

if(plexHitTestObject(LeftAndTop,rect)){car.x+=speed;

car.y-=speed;}//当其左上角与外部区域发生碰撞则将其往右下方移动

if(plexHitTestObject(RightAndTop,rect)){car.x-=speed; car.y-=speed;}

//当其左上角与外部区域发生碰撞则将其往左下方移动

if(plexHitTestObject(LeftAndBottom,rect)){car.x+=speed; car.y+=speed;}

//当其左下角与外部区域发生碰撞则将其往右上方移动

if(plexHitTestObject(RightAndBottom,rect)){car.x-=speed; car.y+=speed;}

//当其右下角与外部区域发生碰撞则将其往左上方移动}

将著名景点或重要单位的图片以及介绍信息放置在该区域的上面并设为隐藏,当控制车与特殊区域发生碰撞时。即改变这些资料的visible属性,让其显示出来。通过以上代码即可以实现对车辆的控制,当使用者使用该模拟系统时就可以通过自己的操作更加直观的选择到达目的地所采用的路径,从而方便其更快更准确的到达目的地。

4 如何推广以及应用

基于这种模拟地图系统可以让人们更加深入的了解该城市的交通状况,并能获取更多更准确的城市信息,而且基于flash与网页文件良好的兼容性其可以通过网络媒介得到良好的传播。但目前还是只能实现小范围(比如一个城市市区)的模拟交通环境,相信随着以后技术的不断进步,以及更多的人对于这类模拟环境的研究,未来必将会出现更加完善的模拟系统。

参考文献:

[1] 苏仰娜.基于Flash的汽车模拟驾驶教学系统[J].河南大学学报:自然科学版,2010,40(3):307-310.

[2] 沈钧,李庆.Flash CS3 ActionScript3.0游戏开发基础与范例[M].北京:电子工业出版社,2008.

[3] 朱治国,缪亮,陈艳丽.Flash ActionScript3.0编程技术教程[M].北京:清华大学出版社,2008.

[4] Lott J,Patterson D.Advanced ActionScript 3 With Design Patterns[M].北京:清华大学出版社,2008.

上一篇:基于免疫原理的病毒检测方法研究 下一篇:基于手机平台的智能火灾报警系统设计研究