导航

Flash CS4教程:详细解析抓喜庆游戏教程(2)

时间:2009-10-13    来源:动画设计与制作208例    作者:lby    点击:
图13-5 手型 (6)下面先编写已经创建的元件扩展类FLY ,该类接收一个Number类型参数,将其赋值作为该类产生对象的y轴方向上的递减值,如第16行代码所示,通过在构造函数中为其注册ENTER_FRAME事件侦听,使该类对象在

图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;   
}

 

加入思缘论坛和大家一起交流,相互学习,共同提高.
相关文章和赞助商广告
赞助商信息
推荐文章
热门文章