[Flash动画制作ActionScript教程]Flash 脚本游戏开发教程第六课

分类:Flash动画制作    发布时间:2017年05月29日    点击:1144次

[Flash动画制作ActionScript教程]Flash 脚本游戏开发教程第六课:


[Flash动画制作ActionScript教程]Flash 脚本游戏开发教程第六课.jpg

  范例接宝游戏中人物类的CLASS讲解

  首先请下载源文件:CLASS.rar

  下载好,打开一看,如下:

  一个FLA主文件:

  run_game.fla

  三个目录:

  player

  items

  game

  我把.as类文件分门别类的存放,这样看上去清晰,更重要的是别人看了会觉得我很专业。

  目录player里有:

  Player_1.as

  Player_2.as

  目录items里有:

  Jin.as

  Bao1.as

  Bao2.as

  目录game里有:

  Game_control.as

  Score_view.as

  Time_control.as

  .as具体意义看文件名就应该能知道,这里要说的是,一般默认的规则,放CLASS目录用小写字母命名,.as的类文件名的首字母用大写

  这节详细讲下人物类的CLASS,首先是Player_1.as,人物小李的类

  首先去源文件里点进人物1的MC,看下结构。

  由两帧组成,一是“stand”,二是“run”

  人物上面有一层有个圆形的MC,我把它命名为hit,靠这个mc来做碰撞检测。

  金币里面也有这个名叫hit的MC,我判断人物和金币是不是相碰是用这个语句的: 金币MC.hit.hitTest(人物MC.hit)

  传统碰撞检测都这么做。

  又开始扯话题了,马上拉回来

  现在拿出Player_1.as的代码

  class player.Player_1 extends MovieClip {

  private var hit:MovieClip; //人物MC里出现的东西都要声明,hit这个MC也不例外

  public var speed:Number;//这个是人物移动的速度

  //构造函数

  function Player_1() {

  init();//初始化的人物打包在init()里了

  }

  //隐式设置-获取法

  public function set _speed(sss:Number):Void {

  speed = sss;

  }//可供外界用MC._speed=X修改speed的数值

  public function get _speed():Number {

  return (speed);

  }//可供外界读取speed的数值

  //私-公有方法

  //---初始化方法---

  private function init() {

  _y = 310;

  _x = 300;//人物来到舞台后的初始位置

  speed = 6;//移动速度

  onEnterFrame = Move;//人物来到舞台后就开始onEnterFrame,内容见Move这个function

  }

  //---人物移动---

  private function Move() {

  if (Key.isDown(37)) {

  _xscale = -100;

  _x -= speed;

  this.gotoAndStop("run");

  } else if (Key.isDown(39)) {

  _xscale = 100;

  _x += speed;

  this.gotoAndStop("run");

  } else {

  this.gotoAndStop("stand");

  }

  //以上是左右键的定义,应该看得懂吧?

  if (Key.isDown(38)) {

  speed = 12;

  } else {

  speed = 6;

  }

  //以上是上键的定义,按着后速度就加倍咯

  range();//范围定义,内容见下面

  }

  //---限定移动范围---

  private function range() {

  if (_x>540) {

  _x = 540;

  }

  if (_x<10) {

  _x = 10;

  }//不让人物出界

  }

  }

  这个CLASS文件就是这样。按照前几节我说的结构,鸟鸟们对照这看下。能不能看懂。这里要说的是,第一行的player.Player_1,其中前面的player表示路径“.”就相当于"\",player.Player_1就相当于player\Player_1,关联到MC的时候也要这么写的。

  小李的CLASS写完了

  然后写鸣人的CLASS


  记得前几节我说的“继承”这个概念么?

  快去翻出来看看。

  鸣人和小李就是上键技能不同,所以继承过来后,正文把按键控制重写一次就行了,其它就全继承小李的类了

  代码如下

  class player.Player_2 extends player.Player_1 {

  //继承了player.Player_1类,所以只需要把两者间唯一不同的Move函数重写次就可以啦~当然构造函数还是要的

  function Player_2() {

  init();

  }

  //人物2的Move函数

  private function Move() {

  if (Key.isDown(37)) {

  _xscale = -100;

  _x -= speed;

  if (_currentframe != 3) {

  gotoAndStop("run");

  }//这句自己体会下,不加的话,按上键后鸣人就一直不停的在跳跃了

  } else if (Key.isDown(39)) {

  _xscale = 100;

  _x += speed;

  if (_currentframe != 3) {

  gotoAndStop("run");

  }

  } else {

  if (_currentframe != 3) {

  gotoAndStop("stand");

  }

  }

  //

  if (Key.isDown(38)) {

  gotoAndStop("jump");

  }

  range();

  }

  }

  好了,人物类就写完了。

  消化下。后面的宝物类大同小异,下一节再写。

推荐阅读:

搞笑恋爱动画《第一次的辣妹》将于7月开播

创意金融理财广告片MG动画制作

三维动画在城市规划领域的应用及优势

最近发表
标签列表