详细解析抓喜鹊游戏教程
本例应用了前几章节已经学习的产生随机对象和删除对应随机对象等知识,控制游戏过程中用户移动鼠标指针与创建的随机对象之间是否接触并执行相对应的程序块,显示用户通过移动鼠标指针所扑捉到的喜鹊数量。本实例还创建游戏的结束和重新开始程序,用户可进一步扩展,根据扑捉到的喜鹊数量来设置游戏关卡和游戏级别。通过本例的制作,读者可以掌握对简单基础游戏的创建全过程,停止游戏和重新开始游戏的控制。
本例思路:
<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抓喜鹊游戏的知识,希望大家都能学到这样的基础知识。谢谢大家观看。
美的消毒柜怎么样美的消毒柜维修常见故障图文我们对于消毒柜是非常的陌生的,可以说很多的朋友都没有接触过消毒柜,从事消毒工作的朋友一定对于消毒柜是非常的熟悉了。消毒柜采用的原理是非常先进和科学的,它采用了一系列的消毒方法,包括
万家乐消毒柜常见故障万家乐消毒柜故障分类详解图文我们都知道,厨房用的电器更容易损坏,因为我们经常要用到水,火,油等,而厨房又是很容易就滋生细菌的地方,蟑螂等害虫最喜欢靠近,稍不注意,就容易把厨房里的电器就给弄坏了,消毒碗柜就是其
紫外线臭氧消毒柜有哪些品牌紫外线臭氧消毒柜品牌介绍现在大家对于健康的意识越来越重要,为了保障我们平时的饮食的健康,消毒柜在我们生活中的应用是越来越多,紫外线臭氧消毒柜能很好的保障我们生活碗筷的健康卫生,根据消毒柜的工作原理,消毒柜
医用紫外线消毒柜如何选购医用紫外线消毒柜选购方法医用紫外线消毒柜是医疗器材消毒的好帮手,能够帮我们消除医疗器材的细菌病毒等等,给我们一个放心医护体验。然而医用紫外线消毒柜的品牌众多,消毒医用紫外线消毒柜好呢?今天小编就给大家推荐
消毒柜紫外线灯好吗消毒柜紫外线灯介绍详解紫外线的消毒柜好吗,不少人在家里购买了紫外线消毒柜,但是知道了原理之后又开始犹豫起来不敢使用,那么紫外线的消毒柜到底好不好呢,消毒的效果又怎么样,下面小编就来给大家解除这个疑惑,感
美的消毒柜怎么样美的消毒柜分析介绍详解美的消毒柜是一款非常不错的消毒柜品牌,可以给我么大家带来非常好的餐具清洁效果,那今天小编就来为大家介绍下美的消毒柜的一些使用中的注意事项及清洁的步骤,帮助大家更好的了解和使用美的消
志高消毒柜怎么保养消毒柜保养过程和方法详解志高消毒柜被越来越多的普通家庭和专业的餐厅使用,在整个使用的过程中,有些保养方式还是需要我们提前做好对应方面的了解和认识。提前对具体的保养方式都有了解,不仅可以更好的使用,而且还可
志高柜机空调怎么样志高柜机空调性能特点图文为了改善自己的生活质量,很多电器都成了不少家庭必备的产品,其中,空调就十分的受欢迎,空调的品牌是非常多的,其中,志高柜机空调就是十分热销的产品,今天小编就为大家介绍一些有关志高柜机
志高柜机空调怎么样志高柜机空调优点介绍详解空调的发展可以说是越来越迅速,是当今家庭中必备的电器产品。空调的品牌在近几年逐渐增多,志高柜机空调以其独有的优势受到大家的欢迎,现在我们就来了解下志高柜机空调,小编来为大家讲讲志高
美的消毒柜如何维修美的消毒柜维修介绍详解现如今,人们的生活水平显著提升,大家对于生活质量要求高。享受生活的时候,不要忘记消毒柜是重要性,现在不仅家庭中应用得到,而且在食堂和餐饮业也广泛应用。那么,消毒柜维修问题,怎么处理
美的壁挂式消毒柜怎么安装美的壁挂式消毒柜安装方法为了家里饮食方面的卫生,很多的家庭会选择在家里购买使用消毒柜,我们在商场里面可以看到,消毒柜的品牌跟种类有很多,美的壁挂式消毒柜就是其中的一种,那么,美的壁挂式消毒柜在安装的时候需
颈部按摩椅怎么样颈部按摩椅热门品牌介绍详解我们总会感觉到自己的脖子酸痛,多希望可以在家里就按摩一下,曾经这种想法是很奢侈的,如今颈部按摩椅很好的为我们解决了这个问题,颈部按摩椅都有什么品牌呢?小编就为大家推荐颈部按摩椅品牌
跳舞机多少钱一台跳舞机相关介绍图文详解舞蹈自古以来就是一种象征美好的肢体动作,只是那时候的舞蹈大多以动作轻柔为主。到了现在,舞种也是多种多样,风格不一。除了十分柔情的舞蹈风格之外也不乏充满力道的帅气的舞蹈,这就是街舞了
新华空气净化器好吗新华空气净化器挑选技巧介绍详解在我国的各个地方都在严重遭受着雾霾的肆虐,它让大家很久没有呼吸到过新鲜的空气了,有些人不信,说在家里不就有新鲜的空气嘛,其实并不是这样的,因为空气的流动导致了室内的空气也严重受到了
松下单冷空调怎么样松下单冷空调有哪些特点详解在购买中央空调时,品牌的选择经常让用户犯难,目前松下单冷空调引发市场的潮流,在如今消费者在家中都愿意购买松下单冷空调来调节室内温度,但是对于松下单冷空调到底怎么样相信大家并不是很清
热门科龙空调价格分类大全海信科龙电器集团自创立之初便专注于制冷设备的研发与生产,被业界称为ldquo高效空调专家rdquo,其生产的科龙空调常年保持领先的销量。时尚大方的造型节能环保的核心设计理念和卓越的
康佳空气净化器怎么样康佳空气净化器品牌介绍详解在大家选购空气净化器时,可能都会对眼前的空气净化器品牌有这种疑问到底哪种品牌好,好在哪里?我应该买哪一款?其实这也是我们选购产品是需要做的准备之一,那么究竟哪种空气净化器品牌好呢?
微型空气净化器产品功效微型空气净化器作用现在空气污染越来越严重,会给人带去不健康的影响,因此现在空气净化器越来越流行,越来越受到大家的欢迎,其中微型空气净化器的受欢迎程度也非常的高,微型空气净化器是一种带有夜灯功能的负离
东芝空气净化器怎么样东芝空气净化器特点介绍空气不好会给人们带去危害,因此这是就需要在家中安装一台空气净化器,空气净化器的品牌是多种多样的,小编在这里要讲述的就是它的其中一个品牌东芝空气净化器,现在我们就来具体的了解下东芝空
空气净化器怎么选择空气净化器选购注意事项在我们生活的周围,各种废气污染空气包围着我们,如汽车尾气工厂废气等,让我们每天都感觉很累很疲倦,甚至有很多人患有呼吸系统疾病。因此,为了拥有舒适健康的生活,也为了呼吸到干净健康的空
空气净化器哪种好空气净化器选购标准时代在发展,科技在进步,人们的生活条件也越来越好,但是,空气质量却越来越不好,长期呼入不干净的空气就会影响我们的健康,所以,选择使用空气净化器的人并不在少数,那么,我们到底应该买什
空气净化器什么品牌好空气净化器品牌推荐以前社会还不发达的时候,我们觉得天是蓝的,水是清的,不会有人会想到要使用什么空气净水器水质净化器之类的。但是现在科技发达了,污染也就加重了,各种净化器产品也就相继推出了。空气净化器