毕业论文 论文提纲 论文写作 公文范例 教育论文 教育学论文 师范教育 学术论文     论文指导*
                     
 
   
   
   
   
           
 

当前位置:课件115学培吧(kj115.com)→FLASH课件游戏开发教程→文章系列

 
 
标题:flash游戏开发之打气球系列(一)
 
展示台

文章来源 作者:admin 密码:admin 整理:湖北金鹰

◇游戏开发栏目简介
内容是FLASH课件游戏制作教程,适合开发课件游戏,增加课件的感染力,适合高手学习,基础学习者可以参加我站的游戏开发视频教程的学习是最佳之选。

其它教程文章还有网侠教程图文教程等。
学习过程中如果需要相关的软件下载,你可以到本站软件下载专区去看看。

---------------

论文相关服务
 

湖北金鹰课件吧

好久没有写正经的文章了,这次打算写个打气球的文章,分为几部分写,其实是想写细点,其中很多方法,会扩展开讲.具体的提纲为以下:
1,瞄准镜的产生(类似attachMovie在AS3中该如何表现?)
2,飞翔的气球(怎么飞?随机飞,随机速度又怎么表现?该如何记时?)
3,打气球(怎么算打中?打中后,气球爆炸怎么表现?声音呢?)
4,给我个计数器(计算打中的,飞走的,甚至击中概率)
5,成与败(怎么算胜利?怎么算失败?如何表现)
6,完善(结尾)

--------------------------------------------------------------------------------

1,瞄准镜的产生(类似attachMovie在AS3中该如何表现?)
刚开始看AS3.0,估计从AS2过来的人都会有这样的慌张,attachMovie这么命令没了,那我怎么能把库里的实例弄出来呢?层次又该怎么办?别慌张,我们从打气球的游戏制作慢慢讲.
首先在舞台上画一个圆圈加十字线,就当是瞄准镜.但是这里有两种画法,第一种是十字线相交,第二种是十字线不相交,如下图.



为什么我要说有两种呢?因为这两种用发不同,后面我会讲到.不过这里我用的是不相交的那种瞄准镜.我们把这个瞄准镜做成实例命名aim,扔到库里,并把舞台上的删除.接着按F11,弹出库面版,右键点aim,然后点Linkage,然后如下图选择填写:



接着回到舞台,按F9,在动作面板里写下如下代码:

varaims:MovieClip;
aims=newaim();
addChild(aims);

以上代码就是像类似AS2里的attachMovie就可以把库里的实例用Linkage给调用到舞台上.如果你要调用其他的实例,都可以这么做,不过就是命名不同而已.如果在封装类里写,形式也是同样的.
AS3讲究容器,所以需要addChild这语句把当前的实例放到容器里.这样瞄准镜就出现了在舞台上,但是我们的要求不单单如此,我们需要那个瞄准镜头跟着鼠标动.那么继续以下代码:

 

Mouse.hide();
stage.addEventListener(MouseEvent.MOUSE_MOVE,aimMove);
functionaimMove(e:MouseEvent):void{
aims.x=this.mouseX;
aims.y=this.mouseY;
}

我们需要鼠标就是瞄准镜,那么原来那个箭头图需要取消,所以用了hide,然后舞台上要监听鼠标移动.然后根据监听,把当前的鼠标位置传达给瞄准镜.这样,我们第一部分就完成了,很简单.

--------------------------------------------------------------------------------

2,飞翔的气球(怎么飞?随机飞,随机速度又怎么表现?该如何记时?)
武器有了,那么该是猎物出现了.气球该出来了,不过,我们先停下,思考一下气球该怎么出来?当然是从下往上飞,然后呢?一下子飞出来几个?共要飞几个?那就一秒一个吧,共飞10个.好了,先思考到这里.等下继续.不过别忘了,先在舞台上画个气球.然后按照第一步所写的,扔到库里.
一秒一个,共飞10个,那么我们就要用到TIMER类,这个是AS2没有的,代码如下:

vart:Timer;
varballNumber:uint=10;
t=newTimer(1000,10);
t.addEventListener(TimerEvent.TIMER,ballgo);
t.start();

这样一秒一个,共10个算是写出来了,不过还没完,每秒调用时间时,我该干点啥还没写呢,继续:

varballs:MovieClip;
functionballgo(e:TimerEvent):void{
balls=newball();
addChild(balls);
//小球随机出现在Y轴300的地方,主要是为了方便查看,是否调用成功.
balls.x=stage.stageWidth*Math.random();
balls.y=300;
}

这样,小球就挨个的以每秒一个出现在舞台上,但是我们还不满足,毕竟那是气球啊,应该向上飞的.好,继续加入代码,先放速度,目前放统一的速度

varspeed:uint=5;

然后在刚才的ballgoFUNCTION里继续加代码:

balls.addEventListener(Event.ENTER_FRAME,ballFly);

加完后,写ballFly.

functionballFly(e:Event):void{
e.target.y-=speed;
}

测试一下,哈哈,气球在往上飞了,不过可以注意到两点:第一点,好象瞄准镜在气球下嘛,第二点,10个气球应该飞出舞台该消失了吧.恩,考虑的很对.好,先解决瞄准镜的问题:
那瞄准镜为什么会在气球下呢?因为瞄准镜是先放到舞台上的,那么他的层次就比气球低,所以就会出现在气球之下,我们该怎么解决这个问题呢?我的方法是这样的,先制作一个空容器放在舞台上,然后用来放气球,很多的气球.这样不就把问题解决了嘛.解决了吗?不一定
在刚开头,我就说过,瞄准镜有两种做法,为什么呢?好了,我们现在可以在这里知道答案了,因为瞄准镜需要在气球之上,但是如果你是十字相交的话,你鼠标无论怎么点,都是属于点在瞄准镜头上而不是气球上,那我们如果需要气球被打中的话,就是监听气球是否被鼠标点击了.可是鼠标点击都被十字相交的线给阻挡了,怎么办?所以用不相交的线为好。
不过并不是不能用十字相交的线,可以这样解决.用swapChildren()语句在监听点击后调换层次.
第二点疑问还没解决,飞出了舞台该消失,并且移除掉,节省资源.没错,这个是必须做的.那就是监听球的Y轴信息,如果出了舞台就移除掉.为了方便,就做一个移除掉的function,因为等后面爆炸后,这个function还需要调用.
再等等放代码,下面讨论的是随机速度.因为我需要气球都是每一个都是有自己的随机速度,那该怎么做?

balls.speed=5*Math.random()+2;//后面的数据随便改,可快可慢.
那个其实也简单,在产生balls的时候,往里放一个随机的数据,这就完全解决了。
头晕了吧,呵呵,没关系我现在放上以上的全部代码

varaims:MovieClip;
varballs:MovieClip;
vart:Timer;
varballNumber:uint=10;
varcontent_mc:MovieClip;

functionaimMove(e:MouseEvent):void{
aims.x=this.mouseX;
aims.y=this.mouseY;
}
functioninit():void{
content_mc=newMovieClip();
addChild(content_mc);

aims=newaim();
addChild(aims);
aims.enabled=false;
Mouse.hide();
stage.addEventListener(MouseEvent.MOUSE_MOVE,aimMove);
t=newTimer(1000,10);
t.addEventListener(TimerEvent.TIMER,ballgo);
t.start();
}
init();

varspeed:uint=5;
functionballgo(e:TimerEvent):void{
balls=newball();
content_mc.addChild(balls);
balls.x=stage.stageWidth*Math.random();
balls.y=500;
balls.speed=5*Math.random()+2;
balls.addEventListener(Event.ENTER_FRAME,ballFly);
balls.addEventListener(MouseEvent.CLICK,shoot);

}
functionballFly(e:Event):void{
vartempBall:MovieClip=e.currentTargetasMovieClip;
if(tempBall.y+tempBall.height/2>0){
tempBall.y-=tempBall.speed;
}else{
lose(tempBall);
}

}
functionlose(mc:Object):void{
mc.removeEventListener(Event.ENTER_FRAME,ballFly);
mc.parent.removeChild(mc);
}
functionshoot(e:MouseEvent):void{
trace("shoot")
}

 

 
课件115学培吧(湖北金鹰)欢迎您!永久免费服务网址:http://www.kj115.com
   
 

学员众多的FLASH课件学习基地,成万免费FLASH课件制作教程在线学习,还有免费内容课件教程、视频教程、课件技巧、课件探讨、课件欣赏、课件展示、实用教程、课件界面、课件脚本、课件游戏、课件下载、课件封面、课文内容图片、课文人物图片库、课件素材、图片素材、声音素材、动物素材、背景图片、背景资料、背景边框、课件顶栏图片素材、Dreamweaver教程、Dreamweaver网页课件教程、软件下载。承接学习和培训,承接课件订制,课件修改等所有课件相关服务。
本站主要业务:┃flash课件制作视频教程培训┃承接全国竞赛flash课件┃论文代写代发┃代办课件国家级获奖证书┃
联系:QQ:444860709 手机:13339817386


 
 

业务办理
鄂ICP备08005724号