范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

详细解析抓喜鹊游戏教程

  本例应用了前几章节已经学习的产生随机对象和删除对应随机对象等知识,控制游戏过程中用户移动鼠标指针与创建的随机对象之间是否接触并执行相对应的程序块,显示用户通过移动鼠标指针所扑捉到的喜鹊数量。本实例还创建游戏的结束和重新开始程序,用户可进一步扩展,根据扑捉到的喜鹊数量来设置游戏关卡和游戏级别。通过本例的制作,读者可以掌握对简单基础游戏的创建全过程,停止游戏和重新开始游戏的控制。
  本例思路:
  <1> 创建实例背景图。
  <2> 添加按钮和“成绩单”。
  <3> 创建喜鹊动画和手型对象,将其转换为元件类。
  <4> 编写喜鹊元件扩展类。
  <5> 编写主程序类,控制游戏开始与结束,显示用户通过移动鼠标指针所扑捉到的喜鹊数量。
  <6> 随机创建的喜鹊对象与用户鼠标指针接触所执行的控制程序。
  <7> 停止游戏和重新开始游戏的控制。
  实例步骤:
  (1)新建一个空白文档,设置舞台大小为650*400,帧频设置为30,绘制游戏背景图或导入一张适合的背景图作为游戏背景,如下图13-1所示。
  图13-1 实例背景
  (2)新建一个图层,创建三个按钮元件,如下图2-所示,并命名“实例名”为“start_btn” 、“help_btn”、“out_btn” ,分别间隔放置于舞台右下角,如图13-2所示。
  图13-2 控制按钮
  (3)新建一个图层,创建“成绩单”,如下图13-3所示。创建一个动态文本,添加实例名为“displayGrade_txt”,将用于显示用户通过移动鼠标指针所扑捉到的喜鹊数量。
  图13-3 缩放和绘制投影
  (4)创建一个新影片剪辑并命名为“Fly”,扩展元件类也设为“Fly”。在“Fly”影片剪辑里创建喜鹊飞翔的动画,如下面演示图13-4 所示。
  (1)
  (2)
  图13-4 喜鹊和手型
  (5)再创建一个影片剪辑,命名为“gotgood_mc” ,在该影片剪辑内插放3个关键帧,绘制3个手型,如图1- (1)、(2)所示。再创建一个影片剪辑,命名为“MouseHand”,同时设置扩展元件类也为“MouseHand” ,将影片剪辑“gotgood_mc”元件对象放置于此,并命名实例名为“gotgood_mc”,如图13-5所示。
  (1)
  (2)
  (3)
  图13-5 手型
  (6)下面先编写已经创建的元件扩展类“FLY” ,该类接收一个Number类型参数,将其赋值作为该类产生对象的y轴方向上的递减值,如第16行代码所示,通过在构造函数中为其注册ENTER_FRAME事件侦听,使该类对象在被创建时便执行事件侦听器函数enterFrameHandler ,也就是所创建的每一只喜鹊都以某一速度(变量speed值)作向上运动。此外,该类还提供两个方法:removeTimerHandler()用于清除事件侦听器函数,这在该类对象被删除时会被调用(删除不必要的事件侦听);另一个方法flySpeed()是取得_speed值。
  AS3代码
  复制代码
  代码如下:
  package {
  import flash.display.MovieClip;
  import flash.utils.Timer;
  import flash.events.*;
  public class Fly extends MovieClip {
  private var _speed:Number;
  public function Fly(speed) {
  _speed = Math.round(speed);
  this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
  }
  private function enterFrameHandler(event:Event):void{
  this.y -= this._speed;
  }
  public function removeTimerHandler():void {
  this.removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
  trace("清除实例事件");
  }
  public function get flySpeed():Number{
  return this._speed;
  }
  }
  }
  (7)下面是主程序类的编写,我们在构造函数初始化舞台的宽度和高度,并创建存储所有喜鹊对象的容器,如第22到25行代码所示。在第27到31行代码隐藏系统鼠标并创建“手型”,通过侦听stage对象的MOUSE_MOVE和MOUSE_DOWN事件来控制“手型”的鼠标跟随stageMoveHandler()和状态stageDownHandler()。
  AS3代码
  复制代码
  代码如下:
  package {
  import flash.display.*;
  import flash.events.*;
  import flash.utils.Timer;
  import flash.text.TextField;
  import flash.ui.Mouse;
  public class Main extends Sprite {
  private var _grade:Number;//得分值
  public var displayGrade_txt:TextField;//得分显示
  public var start_btn:SimpleButton;//开始按钮
  private var stageW:Number;
  private var stageH:Number;
  private var content_mc:Sprite;//存储所有喜鹊对象的容器
  private var hand_mc:MovieClip;//“手型”对象
  private var _timer:Timer;
  public function Main() {
  this.stageW = stage.stageWidth;
  this.stageH = stage.stageHeight;
  this.content_mc = new Sprite();
  addChild(content_mc);
  Mouse.hide();
  this.hand_mc = new MouseHand();
  hand_mc.mouseEnabled = false;
  hand_mc.gotgood_mc.mouseEnabled = false;
  addChild(hand_mc);
  stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMoveHandler);
  stage.addEventListener(MouseEvent.MOUSE_DOWN, stageDownHandler);
  init();
  }
  (8)stageMoveHandler()方法是简单的鼠标跟随,stageDownHandler()方法是当用户鼠标点击时播放步骤(5)中的“手型”影片剪辑动画,产生“抓”的动作效果。 init()方法中开始初始化该游戏,主要是将displayGrade_txt显示文本的内容设置为0和为开始按钮注册事件侦听器函数。当用户单击start_btn按钮后,便调用startGame()方法,此时,将结束游戏按钮out_btn 设置为可见,并注册事件侦听器函数,如第59、60行代码所示。然后通过创建Timer类对象实例进行计时,每隔500毫秒执行一次copy()侦听器函数,也就是创建一只喜鹊对象,如第62到64行代码所示。第65行将start_btn按钮设置为不可见。
  提示:关于计时器Timer类:Timer(delay:Number, repeatCount:int = 0)
  参数 delay:Number — 计时器事件间的延迟(以毫秒为单位)。
  repeatCount:int (default = 0) — 指定重复次数。 如果为 0,则计时器重复无限次数。 如果不为 0,则将运行计时器,运行次数为指定的次数,然后停止。
  AS3代码
  复制代码
  代码如下:
  private function stageMoveHandler(e:MouseEvent):void {
  this.hand_mc.x = stage.mouseX;
  this.hand_mc.y = stage.mouseY;
  }
  private function stageDownHandler(event:MouseEvent):void {
  hand_mc.gotgood_mc.gotoAndPlay(2);
  }
  private function init():void{
  _grade = 0;
  displayGrade_txt.text = "0";
  start_btn.addEventListener(MouseEvent.CLICK,startGame);
  }
  private function startGame(event:MouseEvent):void {
  trace("开始游戏!");
  out_btn.visible = true;
  out_btn.addEventListener(MouseEvent.CLICK,outGame);
  _timer =new Timer(500,0);
  _timer.addEventListener(TimerEvent.TIMER,copy);
  _timer.start();
  start_btn.visible =false;
  }
  (9) copy()侦听器函数中,创建“喜鹊”对象,设置1到11之间的随机数作为其随机速度值,如第70行代码所示。统一设置其y坐标为舞台底部位置,x坐标为随机舞台宽度值,如第71、72行代码所示。将创建的“喜鹊”对象统一添加到content_mc容器中,并注册ROLL_OVER和ENTER_FRAME事件侦听。当用户移动鼠标指针经过“喜鹊”对象时,便会调用downHandler()侦听器函数,清除其事件侦听和清除该对象本身,如第81到85行代码所示,同时也调用refreshGrade()方法累加计算用户抓到的“喜鹊”数量。removeDrop()函数只是判断“喜鹊”对象是否运动到舞台顶部,当运动到舞台顶部时,清除“喜鹊”对象的事件侦听和其本身,如第95到100行代码所示。
  AS3代码
  复制代码
  代码如下:
  private function copy(event:TimerEvent) {
  var mc = new Fly(Math.random() * 10 + 1);
  mc.x = Math.random() * this.stageW;
  mc.y = this.stageH;
  content_mc.addChild(mc);
  mc.addEventListener(MouseEvent.ROLL_OVER, downHandler);
  mc.addEventListener(Event.ENTER_FRAME, removeDrop);
  }
  private function downHandler(event:MouseEvent) {
  var mc = event.target;
  mc.removeTimerHandler();
  mc.removeEventListener(MouseEvent.MOUSE_DOWN, downHandler);
  mc.removeEventListener(Event.ENTER_FRAME, removeDrop);
  content_mc.removeChild(mc);
  //refreshGrade(mc.flySpeed);//还可以通过扩展refreshGrade方法,按不同速度得分
  refreshGrade();//按数量
  }
  private function removeDrop(event:Event) {
  var _mc:MovieClip = event.target as MovieClip;
  if (_mc.y <= 0) {
  _mc.removeTimerHandler();
  _mc.removeEventListener(MouseEvent.MOUSE_DOWN, downHandler);
  _mc.removeEventListener(Event.ENTER_FRAME, removeDrop);
  content_mc.removeChild(_mc);
  }
  }
  public function refreshGrade(grade:Number = 1):void {
  this._grade += grade;
  displayGrade_txt.text = this._grade.toString();
  }
  (10)下面代码是对结束游戏的控制和重新开始初始化游戏。当用户单击“结束游戏”按钮便调用该方法,停止_timer对象的计时,将“开始游戏”按钮显示出来同时隐藏“结束游戏”按钮,如下面第111到113行代码所示。然后清除容器中的所有子项侦听和子项,如第116到124行代码所示,再重新调用init()方法。
  AS3代码
  复制代码
  代码如下:
  private function outGame(event:MouseEvent):void{
  _timer.stop();
  start_btn.visible = true;
  out_btn.visible = false;
  //下面清除容器中的所有子项侦听和子项
  var num:uint = content_mc.numChildren;
  var _mc:MovieClip;
  for (var i:int = 0; i  
  _mc = content_mc.getChildAt(0) as MovieClip;
  _mc.removeEventListener(MouseEvent.MOUSE_DOWN, downHandler);
  _mc.removeEventListener(Event.ENTER_FRAME, removeDrop);
  content_mc.removeChild(_mc);
  }
  init();
  }
  }
  }
  以上教程就是解析Flash CS4抓喜鹊游戏的知识,希望大家都能学到这样的基础知识。谢谢大家观看。

毛坯房能装地暖吗毛坯房地暖安装技巧介绍详解今天小编为您介绍的是毛坯房地暖的验收标准及安装技巧,相信很多朋友在对房屋进行装修时都会遇到这些问题,所以掌握一些地暖安装的常识,是很有必要的。下面,小编就向您介绍一下毛坯房地暖的相bosch地暖如何安装bosch地暖安装技巧介绍详解bosch地暖是一款很不错的地暖,但是想要使用bosch地暖我们也要知道如何安装。安装地暖之后居室的舒适性会有极大的提高,大家冬季就能有一个比较舒适的生活环境了。其实地暖的安装并不德国威能水暖怎样德国威能水暖介绍及选购技巧详解室内装修是近年的热门话题,大家在室内装修上面都是特别的用心,因为都想要拥有一个漂亮又温馨的家,现在有各种各样的装修材料出现在我们的面前,水暖也是属于室内装修的一种,德国威能水暖不知瑜伽馆地暖怎么安装瑜伽馆地暖安装技巧介绍详解众所周知,瑜伽是很多人都十分喜爱的一种运动方式,经常练瑜伽也有益于我们的身心健康,瑜伽馆往往都是比较空旷的,为了让人们在练瑜伽的时候不会太寒冷,很多开瑜伽馆的人都想在瑜伽馆中安装地地暖怎么安装地暖安装技巧介绍详解地暖是一项既古老又崭新的技术。在中国地面采暖可追溯到明末,仅供皇宫王室享有。比如故宫就是通过在地面砌烟道,配置出烟窗,将热能传到室内,达到采暖效果的。伴随着科技的进步,地面供暖技术家用水暖散热器有哪些品牌家用水暖散热器品牌介绍详解在冬天的时候,我们最直观的感受就是温度的降低,就算是密闭的房屋里温度也会降低很多,尤其是北方地区更会到达零下十几度甚至几十度的情况。而在这种情况下,如果大家没有安装取暖设备的话,肯家用水暖怎么安装水暖安装方法介绍详解在我们的众多家庭取暖设备的选择上,我们一般都会选择最合适的来使用,而在我们的众多取暖设备中,水暖,是一种非常理想环保的取暖设备,那我们家庭用的水暖该怎么安装呢?今天小编就来为大家介家用水暖暖气片优势有哪些家用水暖暖气片优势介绍详解寒冷的冬天让人感觉十分的难受,为了让家中变得温暖起来,很多人都会使用采暖设备,由于家用水暖暖气片使用方便,所以家用水暖暖气片就非常受大家的喜爱,那么,家用水暖暖气片都有哪些优势呢?家用水处理设备怎么安装家用水处理设备安装注意事项详解普通的家用水处理设备(家用净水机家用软水机家用纯水机等)体积都不大,其中较大的家用软水机或采用滤料的家用净水机(过滤)的实际占地也仅为0。5mtimes0。3mtimes1。4m(家用水处理设备怎么选家用水处理设备选购方法详解家用水处理设备怎么选一直以来都是一个令人头疼的问题,各家品牌王婆卖瓜自卖自夸,各种说辞让消费者失去了分辨能力。而家庭用水直接影响身体健康,必须选择优质的家用水处理设备,那您家的水处家用水处理设备有哪些作用家用水处理设备作用介绍详解家用水处理设备又称为ldquo水家装rdquo,系统主要分两类,一类是针对家庭总水管道的水处理设备,如前置过滤器净水机软水机另一类就是针对一个用水点的水处理设备,如直饮机纯水机等,
冰箱冷藏室不制冷的原因冰箱冷藏室不制冷解决方法小编家昨儿个喜提一个大冰柜,不得不说,冰柜和冰箱唯一的区别就是,没有那些小格子,小格子,可以随便放。好,废话不多说,小编今天就跟大家谈谈冰箱的冷藏室为什么会不制冷呢?我们都知道冰箱长虹冰箱不制冷怎么办长虹冰箱不制冷原因及解决方法我们在使用冰箱的时候都很容易出现冰箱不制冷的现象,当冰箱出现不制冷现象的时候,我们应该如何检查?是什么原因导致的呢?现在很多人都选择长虹冰箱,长虹这个品牌的冰箱也是比较火的,而且质康旺消毒柜怎样康旺消毒柜功能介绍详解消毒柜作为我们日常生活的必需品,是必不可少的。事实上,我们每天洗过的餐具上都会残留着一些细菌。再次使用对我们的健康不利。所以消毒柜是一定需要的。下面小编就来为大家介绍一下,康旺消毒伟星地暖好吗伟星地暖优势介绍详解随着冬天脚步的来临,人们都开始为冬季取暖做准备,因此各种地暖品牌就开始陆续出现在人们眼前,那么如何去选择一款地暖又是一大难题。人们在茶余饭后又开始讨论起哪款地暖品牌比较好,下面小编伟星地暖好不好伟星地暖优点介绍详解对于天气寒冷的冬天而言,地暖是家庭再适合不过的取暖装置了。地暖的使用,可以将整个房间温度提高,甚至地板都是热的。伟星地暖就是其中很畅销的一款产品,优点很多,接下来,本文就为大家详细酷派298手机怎么样信息化科技化发展迅速的时代里,手机已经成为我们生活中不可或缺的一部分。手机可以帮助我们与远方朋友取得联系,还可以在手机上娱乐学习等等。但是智能机的出现让中老年人的选择更加困难,因为诺基亚3110c如何刷机方法步骤现在智能机的普及越来越大了,随着时代的发展,过去的老式翻盖滑盖手机逐渐地退出了历史舞台。但是我们不能否认的是,类似于诺基亚这样的手机其实也有着不可忽略的优点。一些诺基亚手机的忠实粉诺基亚3110c如何刷机导语诺基亚手机作为质量可靠耐摔防震的产品,赢得了大多数消费者的认可,因此在日常生活中使用颇广。对于诺基亚手机,人们肯定都不会很陌生,那么相信诺基亚3110C这款手机大家都不会陌生,诺基亚6320c评测简介图文提到ldquo诺基亚rdquo品牌手机,相信许多朋友都会立即想到非智能手机,会立即想到诺基亚品牌手机所具有的ldquo直板结实耐用rdquo等特点。确实如此,诺基亚品牌手机曾经是中lenovoi60s报价及评测介绍图文lenovoi60s,是一款上是以2009年的联想i60s手机,它旗下一共有三款手机,也就是豪华版舒适版Game激爽加强版,其配置价格有些许差异。lenovoi60s是一款双滑盖手5250诺基亚的最新评测图文说起诺基亚手机恐怕是无人不知,无人不晓吧,它可是手机界的一大品牌啊,随着手机技术的不断发展,市场上出现了各种品牌的智能大屏手机,而且大多数都是采用全新的系统也就是我们提到的安卓系统