武陵观察网 问答 详细解析抓喜鹊游戏教程

详细解析抓喜鹊游戏教程

这个例子应用了前面章节学过的生成随机对象和删除相应随机对象的知识,控制游戏过程中用户是否移动鼠标指针接触到创建的随机对象并执行相应的程序块,显示用户通过移动鼠标指针抓到的喜鹊数量。这个例子还创建了结束和重启游戏的程序,用户可以进一步扩展,根据抓到的喜鹊数量来设置游戏等级和关卡。通过这个例子的制作,读者可以掌握创建简单基础游戏、停止游戏、重启游戏的全过程控制。

这个例子的想法是:

1创建一个实例背景图。

2添加按钮和“报告单”。

3创建喜鹊动画和手对象,并将其转换为组件类。

4写喜鹊组件扩展类。

编写主程序类,控制游戏的开始和结束,通过移动鼠标指针显示用户抓到的喜鹊数量。

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”。在“飞”电影剪辑中创建一个喜鹊飞行的动画,如下面的演示图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”。该类接收一个数字参数,并将其指定为该类生成的对象在Y轴方向上的递减值。如第16行代码所示,通过在构造函数中注册ENTER_FRAME事件拦截,对象在创建时会执行事件监听函数enterFrameHandler,即创建的每只喜鹊都会以一定的速度(变速值)来做。此外,该类还提供了两个方法:removeTimerHandler()用于清除事件监听器函数,在删除类对象时会调用该函数(删除不必要的事件监听);另一个方法flySpeed()是获取_speed值。

AS3代码

复制代码

代码如下:

包{

导入flash . display . movie clip;

导入flash . utils . timer;

导入flash . events . *;

公共类Fly扩展MovieClip {

私有var _speed:数字;

公共功能飞行(速度){

_speed=Math.round(速度);

this.addEventListener(事件。ENTER_FRAME,ENTER FRAME handler);

}

私有函数enter frame handler(Event:Event):void {

这个。y -=这个。_速度;

}

公共函数removeTimerHandler():void {

this.removeEventListener(事件。ENTER_FRAME,ENTER FRAME handler);

Trace(“清除实例事件”);

}

公共函数get flySpeed():Number{

归还这个。_速度;

}

}

}

(7)下面是主程序类的编写。我们在构造函数中初始化舞台的宽度和高度,并创建一个容器来存储所有的magpie对象,如第22到25行所示。在第27到31行,代码隐藏了系统鼠标并创建了一个“手型”。通过监听stage对象的MOUSE_MOVE和MOUSE_DOWN事件,控制“手型”鼠标跟随stageMoveHandler()和stageDownHandler()状态。

AS3代码

复制代码

代码如下:

包{

导入flash . display . *;

导入flash . events . *;

导入flash . utils . timer;

导入闪光。文字。textfield

导入闪光。ui。鼠标;

公共类主要的扩展雪碧{

私有var _grade:数字;//得分值

公共var显示grade _ txt:TextField;//得分显示

公共var start _ BTN:简单按钮;//开始按钮

私有var stageW:数字;

私有var stageH:数字;

私有var content _ MC:Sprite;//存储所有喜鹊对象的容器

私人var hand _ MC:电影剪辑;//"手型"对象

私有var _ Timer:定时器;

公共函数Main() {

这个。stagew=阶段。舞台宽度;

这个。stageh=阶段。舞台高度;

这个。content _ MC=new Sprite();

addChild(content _ MC);

老鼠。hide();

这个。hand _ MC=新鼠标手();

hand _ mc.mouseEnabled=false

手_ MC。得到了好_ MC。鼠标启用=假;

addChild(hand _ MC);

舞台。addevent侦听器(鼠标事件.MOUSE_MOVE,stageMoveHandler);

舞台。addevent侦听器(鼠标事件.MOUSE_DOWN,stageDownHandler);

init();

}

(8)stageMoveHandler()方法是简单的鼠标跟随,stageDownHandler()方法是当用户鼠标点击时播放步骤(5)中的"手型"影片剪辑动画,产生"抓"的动作效果初始化()方法中开始初始化该游戏,主要是将显示等级_txt显示文本的内容设置为0和为开始按钮注册事件侦听器函数。当用户单击start_btn按钮后,便调用开始游戏()方法,此时,将结束游戏按钮out_btn设置为可见,并注册事件侦听器函数,如第59、60行代码所示。然后通过创建计时器类对象实例进行计时,每隔500毫秒执行一次复制()侦听器函数,也就是创建一只喜鹊对象,如第62到64行代码所示。第65行将start_btn按钮设置为不可见。

提示:关于计时器计时器类:定时器(delay:Number,repeatCount:int=0)

参数延迟:数字—计时器事件间的延迟(以毫秒为单位)。

重复计数:整数(默认值=0) —指定重复次数。如果为0,则计时器重复无限次数。如果不为0,则将运行计时器,运行次数为指定的次数,然后停止。

AS3代码

复制代码

代码如下:

私有函数stageMoveHandler(e:鼠标事件):void {

这个。手_ MC。x=阶段。mousex

这个。手_ MC。y=阶段。小老鼠;

}

私有函数stageDownHandler(事件:MouseEvent):void {

手_ MC。得到了好_ MC。goto and play(2);

}

私有函数init():void

_ grade=0;

displayGrade _ txt.text=' 0

从BTN出发。addevent侦听器(鼠标事件.点击,开始游戏);

}

私有函数开始游戏(事件:鼠标事件):无效{

跟踪('开始游戏!');

out _ btn.visible=true

BTN郊外。addevent侦听器(鼠标事件.点击,out游戏);

_ timer=新计时器(500,0);

_定时器。addevent侦听器(计时器事件.定时器,副本);

_定时器。start();

start _ btn.visible=false

}

(9)复制()侦听器函数中,创建"喜鹊"对象,设置一到11之间的随机数作为其随机速度值,如第70行代码所示。统一设置其y坐标为舞台底部位置,x坐标为随机舞台宽度值,如第71、72行代码所示。将创建的"喜鹊"对象统一添加到内容_mc容器中,并注册翻转和ENTER_FRAME事件侦听。当用户移动鼠标指针经过"喜鹊"对象时,便会调用向下处理器()侦听器函数,清除其事件侦听和清除该对象本身,如第81到85行代码所示,同时也调用refreshGrade()方法累加计算用户抓到的"喜鹊"数量移除Drop()函数只是判断"喜鹊"对象是否运动到舞台顶部,当运动到舞台顶部时,清除"喜鹊"对象的事件侦听和其本身,如第95到100行代码所示。

AS3代码

复制代码

代码如下:

私有函数副本(事件:TimerEvent) {

var MC=新飞(数学。random()* 10 ^ 1);

MC。x=数学。random()*这个。stagew

MC。y=这个。stageh

内容_ MC。addchild(MC);

mc.addEventListener(MouseEvent .ROLL_OVER,down处理器);

mc.addEventListener(事件. ENTER_FRAME,移除drop);

}

私有函数向下处理器(事件:MouseEvent) {

var mc=event.target

MC。removetimerhandler();

MC。removeeventlistener(鼠标事件.MOUSE_DOWN,DOWN处理程序);

mc.removeEventListener(事件. ENTER_FRAME,移除drop);

内容_ MC。删除子项(MC);

//刷新等级(MC。flyspeed);//还可以通过扩展刷新等级方法,按不同速度得分

刷新等级();//按数量

}

私有函数removeDrop(event:Event) {

var _ MC:电影剪辑=事件。作为电影剪辑的目标;

if (_mc.y=0) {

_ MC。removetimerhandler();

_ MC。removeeventlistener(鼠标事件.MOUSE_DOWN,DOWN处理程序);

_mc.removeEventListener(事件. ENTER_FRAME,移除drop);

内容_ MC。移除子代(_ MC);

}

}

公共函数刷新等级(等级:数量=1):无效{

这个.等级=等级;

displayGrade_txt.text=this ._年级。tostring();

}

(10)下面代码是对结束游戏的控制和重新开始初始化游戏。当用户单击"结束游戏"按钮便调用该方法,停止_计时器对象的计时,将"开始游戏"按钮显示出来同时隐藏"结束游戏"按钮,如下面第111到113行代码所示。然后清除容器中的所有子项侦听和子项,如第116到124行代码所示,再重新调用初始化()方法。

AS3代码

复制代码

代码如下:

私有函数出局游戏(事件:鼠标事件):void {

_定时器。stop();

start _ btn.visible=true

out _ btn.visible=false

//下面清除容器中的所有子项侦听和子项

var num:uint=content _ MC。num个孩子;

var _ MC:电影剪辑;

for(var I:int=0;我

_ MC=content _ MC。获取(0)处的子级作为电影剪辑;

_ MC。removeeventlistener(鼠标事件.MOUSE_DOWN,DOWN处理程序);

_mc.removeEventListener(事件. ENTER_FRAME,移除drop);

内容_ MC。移除子代(_ MC);

}

init();

}

}

}

以上教程就是解析Flash CS4抓喜鹊游戏的知识,希望大家都能学到这样的基础知识。谢谢大家观看。

本文来自网络,不代表本站立场,转载请注明出处:https:

详细解析抓喜鹊游戏教程

武陵观察网后续将为您提供丰富、全面的关于详细解析抓喜鹊游戏教程内容,让您第一时间了解到关于详细解析抓喜鹊游戏教程的热门信息。小编将持续从百度新闻、搜狗百科、微博热搜、知乎热门问答以及部分合作站点渠道收集和补充完善信息。