Flash游戏开发制作旋转坦克

  学习Flash,不学ActionScript,所做的事情是有限的。但很多朋友都在抱怨AS太难学了。笔者要告诉大家,其实AS一点也不难学。现在,笔者就教大家制作一个可以随意开动,并旋转其炮台的坦克(感觉就象在玩遥控汽车,很有意思)。在文章中,我们将学到AS中一些基本的语句、属性、对象和方法。

  好,下面我们就一起来学习吧。首先,新建一个文件,600*450像素,背景为黑色,40fps。

  一、实现炮塔的旋转

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

开发制作旋转坦克-flash制作旋转动画">
  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键”。

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

  原文地址:http://soft.zol.com.cn/41/419513.html

时间: 2024-08-04 03:19:08

Flash游戏开发制作旋转坦克的相关文章

Flash游戏开发实例制作旋转坦克

  学习Flash,不学ActionScript,所做的事情是有限的.但很多朋友都在抱怨AS太难学了.笔者要告诉大家,其实AS一点也不难学.现在,笔者就教大家制作一个可以随意开动,并旋转其炮台的坦克(感觉就象在玩遥控汽车,很有意思).在文章中,我们将学到AS中一些基本的语句.属性.对象和方法. 好,下面我们就一起来学习吧.首先,新建一个文件,600*450像素,背景为黑色,40fps. 一.实现炮塔的旋转 1.按快捷键Ctrl+F8创建一个名为"炮塔"的影片剪辑元件.接着在其编辑场景中

Flash游戏开发系列一:游戏中的敌人(7)

第六篇:Flash游戏开发系列一:游戏中的敌人. 五.跟踪导弹(续完) 上次我们已经知道怎样让导弹的旋转看起来像那么回事,紧接着就是让导弹运动起来了. 导弹的一些属性,我们需要好好定义一下,这是完整的初始化函数: init = function () {enemy._x = 40;enemy._y = 350;enemy._rotation = 0;enemy_obj.MAXAngle = 6;enemy_obj.MAXSpeed = 4;enemy_obj.speedX = enemy_obj

Flash游戏开发打小狗

游戏界面: 开发打小狗-flash 游戏开发"> 图1 游戏概述: 在Flash游戏中,打小狗(老鼠等)游戏是比较基础的游戏了.如果对Flash游戏设计有兴趣的朋友,想学习如何用Flash来制作游戏的朋友,可要好好学习这个游戏的制作哦.因为该游戏中使用的都是一些比较基础的.基本的和常用的ActionScript脚本语言.另外,我们也可以从中学到Flash游戏策划.设计到制作完成的一些概念.方法和技巧等知识. 游戏原理: 首先,游戏通过startdrag().Mouse.hide()来改变隐

3366首届Flash游戏开发大赛正式开启

近日,3366首届http://www.aliyun.com/zixun/aggregation/12592.html">Flash游戏开发大赛正式开启.赛事以"开发小游戏 共赢大未来"为主题,由3366开放平台主办,91天地会.flash开发者大会协办,迪士尼.腾讯游戏.腾讯QQ秀为大赛 合作伙伴.大赛截止到2012年8月,向全国优秀的Flash游戏开发者发出邀请,一同共享Flash游戏开发的创意盛典. 大赛的相关负责人在谈到本次比赛时表示:"希望大赛给 众

首届麻球Flash游戏开发大赛颁奖典礼举行

[TechWeb报道]12月6日消息,日前,由盛大游戏旗下麻球游戏主办的"首届麻球Flash游戏开发大赛"颁奖典礼在环球金融中心隆重举行.NTFusion Studio团队创作的<怪兽塔防>夺取专业组冠军,除获10万元现金大奖,还将优先承接盛大游戏外包百万级游戏开发订单.校园组冠军则被上海交通大学计算机系研二学生蔡浩宇夺得,奖励为3万元现金.备受关注的校园20万年薪录用盛大游戏特别奖也名花有主,被授予上海交通大学应届博士生张鸣. 据悉本此大赛自7月31日正式宣布开赛以来,得

Flash游戏开发系列一:游戏中的敌人(6)

第五篇:Flash游戏开发系列一:游戏中的敌人. 五.跟踪导弹(续) 前面讲过了如何让导弹朝向玩家,但是真正在应用的时候,不可能这么生硬的体现.大家可能也发现了,导弹的方向一直指向玩家,其实很不真实,那么如何才能更加真实一些呢.常用的方法有几种,我们这里介绍其中一种,其它的大家可能要去参考游戏开发图书了. 在这里,我们使用的方法是,导弹有一个最大转向角度,也就是说,如果转向达到这个角度,就不能再转了,这样,看起来就会真实一些,导弹也就不回一下子面对玩家,看看下面这个例子,我把导弹的最大转向角度设

Flash游戏开发系列一:游戏中的敌人(5)

第四篇:Flash游戏开发系列一:游戏中的敌人. 五.跟踪导弹 看看这个例子,在动画屏幕上按下鼠标,导弹就会跟踪玩家,直到击中玩家: 对于新手来说,一下子就实现它可能不太容易,我们来一点一点的做. (1)导弹的方向 我们先来实现导弹朝向玩家的功能,就像下面这个:(按下鼠标观看) 首先,我们注意到,敌人的导弹是要朝向玩家的,这和前面不同.前面的敌人是一个圆头圆脑的家伙,不用分辨它的方向.我们就先来看一下如何让敌人有方向感. 首先给新手讲解一下基本知识:用鼠标来触发动画. 我们先设定一个变量,布尔类

Flash游戏开发系列一:游戏中的敌人(4)

第三篇:Flash游戏开发系列一:游戏中的敌人. 四(插).半随机移动的敌人 看看这个例子: 我们可以看到,一个敌人按照一定的规律从上面到下面移动.主要的规律是自上而下,但是移动的范围是随机的.这种方法在早期的游戏里面经常使用,包括一些大型的游戏.其实这是一种非常简单的运动方式,但是如果使用得当,也很有威胁. 我们大概瞧一下原理: 敌人每次向一个方向以随机的速度走八步,然后再改变方向,再走八步.在这个例子里面,为了简单说明,敌人走到画面底部以后,我们会让它重新回到原来的位置,重新再走. 我们创建

Flash游戏开发系列一:游戏中的敌人(3)

第二篇:Flash游戏开发系列一:游戏中的敌人. 三.指定范围内的跟踪深化 再看看这个例子: 现在的敌人的视线范围比较真实了,它一直在四周查看,只有当你进入它的视觉范围的时候,敌人才会来追赶你. 这就是有指定范围的跟踪敌人,它的原理是和前面一样的: 如果(玩家进入敌人范围){ 如果(玩家x坐标 <> 敌人x坐标){调整敌人x坐标,趋近玩家x坐标}如果(玩家y坐标 <> 敌人y坐标){调整敌人y坐标,趋近玩家y坐标}} 我们可以在 enemy 里面放置一个扇形的范围,给一个实例名叫做