Flash游戏开发实例系列:坦克篇
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-10
学习Flash,不学ActionScript,所做的事情是有限的。但很多朋友都在抱怨AS太难学了。笔者要告诉大家,其实AS一点也不难学。现在,笔者就教大家制作一个可以随意开动,并旋转其炮台的坦克(感觉就象在玩遥控汽车,很有意思)。在文章中,我们将学到AS中一些基本的语句、属性、对象和方法。 效果预览:点击这里下载(8K, zip压缩文件) 源文件下载:点击这里预览 好,下面我们就一起来学习吧。首先,新建一个文件,600*450像素,背景为黑色,40fps。 一、实现炮塔的旋转 1.按快捷键Ctrl+F8创建一个名为“炮塔”的影片剪辑元件。接着在其编辑场景中绘制一个炮塔,如图1所示。注意,炮塔是围绕场景中央的“╬”字进行旋转的。所以大家在制作的时候要把炮塔圆盖的中心和元件场景中的“╬”字重叠在一起。 ? 图1 2.按快捷键Ctrl+F8创建一个名为“坦克”的影片剪辑元件。接着在其编辑场景的“图层 1”中绘制一个坦克的主体。接着再从库中把“炮塔”元件拖拽到“图层2”中,如图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; ??? } } 上面的一大段代码 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: Flash动物行为设计之蛇篇下一篇: 有趣!用Flash制作互动的小人
关于Flash游戏开发实例系列:坦克篇的所有评论