flash cs4教程:周密解析抓囍鹊游戏教程

更新时间:15-10-22 23:31 热度:383
 

本例应用了前几章节已经学习的萌生随机对象和删去对应随机对象等知识,扼制游戏过程中用户移动鼠标指针与开创的随机对象之间是否接触并执行相对应的手续块,显露用户经过移动鼠标指针所扑捉到的囍鹊数目。本实际的例子还开创游戏的终了和从新着手手续,用户可进一步扩展,依据扑捉到的囍鹊数目来设置游戏关卡和游戏级别。经过本例的制造,读者可以掌握对简单基础游戏的开创全过程,休止游戏和从新着手游戏的扼制。

本例思考的线索:
<1> 开创实际的例子环境图。
<2> 添加按键和“绩效单”。
<3> 开创囍鹊动画和手型对象,将其改换为元件类。
<4> 编著囍鹊元件扩展类。
<5> 编著主手续类,扼制游戏着手与终了,显露用户经过移动鼠标指针所扑捉到的囍鹊数目。
<6> 随机开创的囍鹊对象与用户鼠标指针接触所执行的扼制手续。
<7> 休止游戏和从新着手游戏的扼制。

实际的例子步骤:

(1)新建一个空白话文档,设置戏台体积为650*400,帧频设置为30,画出游戏环境图或导入一张适应的环境图作为游戏环境,如下所述图13-1所示。

15102223312381231762867 flash cs4教程:周密解析抓囍鹊游戏教程

 图13-1 实际的例子环境

(2)新建一个图层,开创三个按键元件,如下所述图2-所示,并起名称“实际的例子名”为“start_变态n” 、“help_变态n”、“out_变态n” ,作别间隔安放于戏台右下角,如图13-2所示。

15102223312410947778667 flash cs4教程:周密解析抓囍鹊游戏教程

 图13-2 扼制按键

(3)新建一个图层,开创“绩效单”,如下所述图13-3所示。开创一个动态文本,添加实际的例子名为“displaygrade_txt”,将用于显露用户经过移动鼠标指针所扑捉到的囍鹊数目。

15102223312431253007311 flash cs4教程:周密解析抓囍鹊游戏教程

 图13-3 缩放和画出投影

(4)开创一个新影片儿剪接并起名称为“fly”,扩展元件类也设为“fly”。在“fly”影片儿剪接里开创囍鹊翱翔的动画,如下所述面演习图13-4 所示。

15102223312451558235955 flash cs4教程:周密解析抓囍鹊游戏教程

(1)

15102223312473499309221 flash cs4教程:周密解析抓囍鹊游戏教程

 (2)

图13-4 囍鹊和手型

(5)再开创一个影片儿剪接,起名称为“gotgood_mc” ,在该影片儿剪接内插放3个关键帧,画出3个手型,如图1- (1)、(2)所示。再开创一个影片儿剪接,起名称为“mousehand”,同时设置扩展元件类也为“mousehand” ,将影片儿剪接“gotgood_mc”元件对象安放于此,并起名称实际的例子名为“gotgood_mc”,如图13-5所示。

15102223312517129365466 flash cs4教程:周密解析抓囍鹊游戏教程

(1)

15102223312570370108864 flash cs4教程:周密解析抓囍鹊游戏教程

 (2)

15102223312590675337509 flash cs4教程:周密解析抓囍鹊游戏教程

 (3)

图13-5 手型

(6)下边先编著已经开创的元件扩展类“fly” ,该类收缴一个number类型参变量,将其赋值作为该类萌生对象的y轴方上进的递降值,如第一6行代码所示,经过在建构函数中为其注册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_变态n: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_变态n按键后,便调配使用startgame()办法,此时,将终了游戏按键out_变态n 设置为可见,并注册事情侦听器函数,如第59、60行代码所示。而后经过开创timer类对象实际的例子施行计时,每隔500毫秒执行一次copy()侦听器函数,也就是开创一只囍鹊对象,如第62到64行代码所示。第65行将start_变态n按键设置为不可以见。

提醒:关于计时器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_变态n.addeventlistener(mouseevent.click,startgame);
}

private function startgame(event:mouseevent):void {

trace(“着手游戏!”);
out_变态n.visible = true;
out_变态n.addeventlistener(mouseevent.click,outgame);

_timer =new timer(500,0);
_timer.addeventlistener(timerevent.timer,copy);
_timer.start();
start_变态n.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对象的计时,将“着手游戏”按键显露出来同时掩饰“终了游戏”按键,如下所述面第一11到113行代码所示。而后扫除净尽器皿中的全部子项侦听和子项,如第一16到124行代码所示,再从新调配使用init()办法。

as3代码

复制代码

代码如下所述:

private function outgame(event:mouseevent):void{

_timer.stop();
start_变态n.visible = true;
out_变态n.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();

}

}
}

以上教程就是解析flash cs4抓囍鹊游戏的知识,期望大家都能学到这么的基础知识。谢谢大家特意的看。