Flash如何制作可随意开动并能旋转的坦克
读趣百科>科普>科技数码

Flash如何制作可随意开动并能旋转的坦克

这篇教程是教大家利用Flash制作可随意开动并能旋转的坦克(感觉就象在玩遥控汽车,很有意思),在文章中,将学到AS中一些基本的语句、属性、对象和方法。 一起来学习吧!

学习Flash,不学ActionScript,所做的事情是有限的。但很多朋友都在抱怨AS太难学了。要告诉大家,其实AS一点也不难学。好,下面就一起来学习吧。

首先,新建一个文件,600*450像素,背景为黑色,40fps。

一、实现炮塔的旋转

1.按快捷键Ctrl+F8创建一个名为“炮塔”的影片剪辑元件。接着在其编辑场景中绘制一个炮塔,如图1所示。注意,炮塔是围绕场景中央的“?”字进行旋转的。所以大家在制作的时候要把炮塔圆盖的中心和元件场景中的“?”字重叠在一起。

2.按快捷键Ctrl+F8创建一个名为“坦克”的影片剪辑元件。接着在其编辑场景的“图层 1”中绘制一个坦克的主体。接着再从库中把“炮塔”元件拖拽到“图层2”中,如图2所示。

3.点选“图层2”中的“炮塔”元件,按F9打开“动作”面板,输入以下代码:

复制代码

代码如下:

// 键盘上有键按下时执行

onClipEvent (keyDown) {

// 如果按下“z”键,炮塔向左旋转6度

if (Key.getCode() == 90) {

_rotation -= 6;

}

// 如果按下“x”键,炮塔向右旋转6度

if (Key.getCode() == 88) {

_rotation += 6;

}

}

测试一下,你会发现炮塔现在可以旋转了。因为我们通过_rotation属性来改变“炮塔”的角度。Key.getCode()返回按下的最后一个键的键控代码值。不过,如果读者要用其它键来控制炮塔的选择也是可以的。具体要用什么键,我们可以查查该键的代码——字母键a-z对应的数值是65-90。无论你使用什么键,都要注意这样一个原则——方便用户操作。

二、实现坦克的运动

回到场景1,打开库,把库中的“坦克”元件拖入场景中,接着点选“坦克”元件,按F9打开“动作”面板,输入如下代码:

复制代码

代码如下:

onClipEvent (enterFrame) {

// move函数通过改变坦克的坐标值实现坦克的移动

function move() {

_y -= (Math.cos(Math.PI/180*this._rotation))*speed;

_x += (Math.sin(Math.PI/180*this._rotation))*speed;

}

// 如果敲击键盘上的“↑”键或“↓”键,就调用move函数

if (Key.isDown(Key.UP)) {

move();

}

if (Key.isDown(Key.DOWN)) {

move();

}

// 如果敲击键盘上的“←”键或“→”键,就让坦克旋转

if (Key.isDown(Key.LEFT)) {

_rotation -= 3;

}

if (Key.isDown(Key.RIGHT)) {

_rotation += 3;

}

// 改变坦克的速度偏移量,使坦克运动时有一个加速度

if (Key.isDown(Key.UP) && !(Key.isDown(Key.DOWN)) && speed>-3 && speed<3) {

speed += 0.1;

}

if (Key.isDown(Key.DOWN) && !(Key.isDown(Key.UP)) && speed>-3 && speed<3) {

speed -= 0.1;

}

if ((speed>0.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {

move();

speed -= 0.05;

}

if ((speed<-0.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {

move();

speed += 0.05;

}

// 如果同时按住两个方向相反的键,坦克不会一直移动

if ((Key.isDown(Key.UP)) && (Key.isDown(Key.DOWN))) {

speed /= 1.1;

if ((speed>-0.1) && (speed<0.1)) {

speed = 0;

}

}

// 使坦克始终在场景中移动

if (_x<=0) {

_x = 600;

} else if (_x>=600) {

_x = 0;

}

if (_y<=0) {

_y = 450;

} else if (_y>=450) {

_y = 0;

}

}

上面的一大段代码,读者一下子恐怕也消化不了。现在笔者就来细细地讲讲这些代码。

1.大家可以发现,程序中很多地方用到了move函数,如果我们直接使用move函数里的代码,将会使整个程序变得冗长。而且,这样也不方便对程序地维护。

2.物体在运动的时候,总有一个不断变化的加速度。当坦克在运动在改变运动方向的时候,所改变的角度是不断变化的。通过代码:

_y -= (Math.cos(Math.PI/180*this._rotation))*speed;

_x += (Math.sin(Math.PI/180*this._rotation))*speed;

实现这一变化。其中y轴坐标用“-=”是和Flash坐标系设定有关的。因为,在主场景中,向上移动元件,就要减小y值。

3.Key.isDown()方法在按下“()”中指定的键时返回true值。我们通常用该方法检测是否按下“Shift键”、“Tab键”。

现在测试一下,你一定会觉得很有意思的。

以上Flash制作可随意开动并能旋转的坦克教程,希望大家喜欢!

最新科技数码科普

如何拆分合并excel单元格

在使用excel的过程中,有需要合并或者拆分单元格的,就是将多个单元格合并成一个,或者将一个大的单元格拆分成单个的很多个。那么怎么拆分合并excel单元格?本...
展开详情

autocad如何在相片上标尺寸

在我们实际工作中,为了更加准确的描述某个实物,常遇到标尺寸的问题。本章就利用AUTOCAD软件在相片上标尺寸方法解决这一问题。方法/步骤1、利用手机拍下你要标...
展开详情

雀巢胶囊咖啡机怎样 雀巢胶囊咖啡机优点及使用方法

雀巢胶囊咖啡机操作十分方便,能一键萃取咖啡,相比半自动咖啡机和全自动咖啡机来说更易于操作,雀巢胶囊咖啡机在使用的过程中不需要拆开,所使用的胶囊用完后可直接回收...
展开详情

天骏空气净化器怎么样 天骏空气净化器特点介绍

随着科学技术的进步,人们对于生活用水的好坏越来越注重,饮用水的好坏直接影响着人体健康, 净水器能够有效的保障饮用水的健康,天骏 空气净化器 就是其中的优秀代表...
展开详情

PS怎么精确移动像素px值

在PS中做设计的时候,经常需要对图层进行不停的移动来调整位置, 已达到需求的效果,那么如何知道移动的精确位置呢?自己总结了几点,希望可以对大家有帮助!1、打开...
展开详情

iPod电池有哪些常见问题 常见苹果iPod电池问题解决方法

常见苹果iPod电池问题解决方法,iPod是APPLE推出的一种大容量MP3播放器容量高达10~160GB,可存放2500~10000首MP3歌曲,它还有完善...
展开详情

买macbookpro后悔了,Mac太贵而且端口极其不便捷

这么多年来,MacBook Air一直是Mac用户想要购买超轻薄笔记本的首选,不过苹果在刚刚发布的MacBook Pro上,进行了大刀阔斧的设计变革,让Mac...
展开详情

微软两周狂发7个预览版:Windows10 RedStone 2重磅升级很可能月底推送

进入三月份之前就曾报道微软的Windows 10 RedStone 2公开推送已经箭在弦上,距离发射只差一步。ps.这是继2015年11月、2016年8月之后...
展开详情
热门推荐

风管机如何才能省电 风管机省电技巧

风管机和空调,在我们居民朋友的眼中都是比较耗电的。无论是大品牌还是小品牌,在使用风管机和空调的时候,因为要耗费大量的电力,所以居民朋友一般都不敢长时间的使用,...
展开详情

海信电视的屏幕大小怎么调 海信电视的屏幕大小怎样调

以海信电视:LED32N2000为例。打开电视,按下遥控器上的【设置】按钮,会在电视上弹出【设置菜单】。然后找到并点击【图像设置】,接着进入系统浏览器,找到选...
展开详情

哈啰顺风车一天可以接几单 哈啰顺风车一天可以接几单

顺风车的出现无疑给跨城出行的人们带来了方便,很多人需要跨城出行时都会选择在哈啰顺风车里预约车辆,这就使很多车主想要成为哈啰顺风车司机。不过由于跨城出行距离较远...
展开详情

风管机怎么用才能省电 风管机省电小技巧

现在我们购买产品,除了保证所购买的产品性能好之外,还要求这个产品要省电,因为只有省电的电器,我们才不用额外去多支付一些电费,给我们的经济带来压力。现在是夏天,...
展开详情

如何取消手机上网包流量套餐

现在上网有很多种方式,我们可以通过GPRS数据流量进行上网,同时我们也可以使用WLAN进行上网。不管是哪一种上网方式我们都需要开通相应的业务才能实现,那么这些...
展开详情