导航

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

时间:2009-10-13    来源:动画设计与制作208例    作者:lby    点击:
(9) copy()侦听器函数中,创建喜鹊对象,设置1到11之间的随机数作为其随机速度值,如第70行代码所示。统一设置其y坐标为舞台底部位置,x坐标为随机舞台宽度值,如第71、72行代码所示。将创建的喜鹊对象统一添加到co

(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 <num; 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();   
               
        }   
           
           
    }   
}

 

进入论坛参与讨论: http://www.missyuan.com/viewthread.php?tid=424483

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