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

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

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


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


  先补充个游戏里的结构:

  _root下有三个空MC: pl,item和xs

  pl这个空MC是用来attach人物的

  item这个空MC是用来attach宝物的

  xs这个MC是用来attach显示得分的

  为什么要这么做呢?……因为管理方便呀~以后你会慢慢体会到的。

  严重警告:第7课未搞懂看明白者,请回上节反复研究,直至搞懂。不然继续往下看会让你体内真气逆行,任、督二脉自锁,全身犹如蚂蚁咬,饭吃不下,觉睡不着,放P恶臭,对FLASH丧失学习信心……

  (……)

  好了,能看到这行的,说明你已经是个消化第7节内容的鸟了。

  这一节我也话不多说,直接放代码了。用你第7节学到的内容自我检验下。

  金币10和50共用的CLASS

  复制代码代码如下:

  class items.Jin extends MovieClip {

  static var basic_speed:Number = 3; //下落基础速度

  public var score:Number = 10; //得分

  public var speed:Number; //下落速度

  private var hit:MovieClip; //声明碰撞检测的MC

  private var depth:Number; //当宝物被人物获得,显示得分的MC的深度

  //---构造函数---

  function Jin() {

  init();

  }

  //隐式设置-获取方法

  public function set _score(kkk:Number):Void {

  score = kkk;

  }//得分10还是50,传入这个参数就能解决

  public function _bspeed(){

  basic_speed= 3;

  trace(basic_speed)

  }//这个要说明下,静态变量basic_speed每实例化一个MC都会自我增加,所以基础速度越来越快。这个方法是让basic_speed变回原始的3。用于每回合开始时初始化使用。

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

  speed = sss;

  }

  //共有-私有方法

  private function init() {

  _x = 50+random(450);

  _y = -15;

  speed = basic_speed+random(50)/10;//下落速度是由基础速度+随机增量

  basic_speed+=0.03

  //trace(basic_speed)

  onEnterFrame = Move;

  }

  private function Move() {

  _y += speed;

  if (_y>380) {

  this.removeMovieClip();

  }

  /////////////////////////////////

  if (hit.hitTest(_root.pl.player.hit)) {

  getItem();

  }

  ///////////////////////////////// 碰撞检测哦~

  }

  public function getItem() {

  _root.music_control.snd("jin");//声音控制,以后会讲到

  _root.score += score;

  depth = _root.xs.getNextHighestDepth();

  var a:MovieClip = _root.xs.attachMovie("getScore", "getScore"+depth, depth++);//ATTACH显示得分的MC

  a.aaa.score = "+"+score;

  a._x = _x;

  a._y = _y;

  this.removeMovieClip();

  }

  }

  然后是两个宝物的CLASS,继承了金币的类,只不过改写了被人物吃到后的效果

  爱心

  复制代码代码如下:

  class items.Bao1 extends items.Jin {

  public function getItem() {

  _root.music_control.snd("bao");

  depth = _root.xs.getNextHighestDepth();

  var a:MovieClip = _root.xs.attachMovie("getScore", "getScore"+depth, depth++);

  a.aaa.score = "TIME";

  a._x = _x;

  a._y = _y;

  ////////

  _root.time_c._time += 8;

  ///////调时间控制类的public方法,后面会讲到

  this.removeMovieClip();

  }

  }

  五角星

  复制代码代码如下:

  class items.Bao2 extends items.Jin {

  public var score:Number = 30;

  public function getItem() {

  //_root.score+=score

  _root.music_control.snd("bao");

  ///////

  for (var i in _root.item) {

  if (_root.item[i]._name.substr(0, 3) != "bao") {

  _root.item[i].getItem();

  }

  }

  _root.score += score;

  depth = _root.xs.getNextHighestDepth();

  var a:MovieClip = _root.xs.attachMovie("getScore", "getScore"+depth, depth++);

  a.aaa.score = "+"+score;

  a._x = _x;

  a._y = _y;

  ///////

  this.removeMovieClip();

  }

  }

  宝物这类,和人物类有点相似的。

  下节会把时间控制类和分数控制类一起讲掉。大家快把这节的内容消化了吧~

推荐阅读:

《Urara迷路帖》动画第8话先行图 泳装福利来袭

龙之子纪念动画《Infini-T Force》10月开播 历代英雄都

伯牙弹琴

最近发表
标签列表