`
hgfghw6
  • 浏览: 45347 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

as3.0游戏开发之打气球系列(一)

阅读更多

好久没有写正经的文章了,这次打算写个打气球的文章,分为几部分写,其实是想写细点,其中很多方法,会扩展开讲.具体的提纲为以下:
     1,瞄准镜的产生   (类似attachMovie在AS3中该如何表现?)
     2,飞翔的气球    (怎么飞?随机飞,随机速度又怎么表现?该如何记时?)
     3,打气球   (怎么算打中?打中后,气球爆炸怎么表现?声音呢?)
     4,给我个计数器  (计算打中的,飞走的,甚至击中概率)
     5,成与败   (怎么算胜利?怎么算失败?如何表现)
     6,完善     (结尾)
 
 
1,瞄准镜的产生   (类似attachMovie在AS3中该如何表现?)
     刚开始看AS3.0,估计从AS2过来的人都会有这样的慌张,attachMovie这么命令没了,那我怎么能把库里的实例弄出来呢?层次又该怎么办?别慌张,我们从打气球的游戏制作慢慢讲.
    首先在舞台上画一个圆圈加十字线,就当是瞄准镜.但是这里有两种画法,第一种是十字线相交,第二种是十字线不相交,如下图.
 


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

   接着回到舞台,按F9,在动作面板里写下如下代码:
var aims:MovieClip;
aims= new aim();
addChild(aims);
   以上代码就是像类似AS2里的attachMovie就可以把库里的实例用Linkage给调用到舞台上.如果你要调用其他的实例,都可以这么做,不过就是命名不同而已.如果在封装类里写,形式也是同样的.
   AS3讲究容器,所以需要addChild这语句把当前的实例放到容器里.这样瞄准镜就出现了在舞台上,但是我们的要求不单单如此,我们需要那个瞄准镜头跟着鼠标动.那么继续以下代码:
Mouse.hide();
stage.addEventListener(MouseEvent.MOUSE_MOVE,aimMove);
function aimMove(e:MouseEvent):void{
 aims.x = this.mouseX;
 aims.y = this.mouseY;
}
    我们需要鼠标就是瞄准镜,那么原来那个箭头图需要取消,所以用了hide,然后舞台上要监听鼠标移动.然后根据监听,把当前的鼠标位置传达给瞄准镜.这样,我们第一部分就完成了,很简单.
    下载:

下载文件
点击这里下载文件
2,飞翔的气球    (怎么飞?随机飞,随机速度又怎么表现?该如何记时?)
    武器有了,那么该是猎物出现了.气球该出来了,不过,我们先停下,思考一下气球该怎么出来?当然是从下往上飞,然后呢?一下子飞出来几个?共要飞几个?那就一秒一个吧,共飞10个.好了,先思考到这里.等下继续.不过别忘了,先在舞台上画个气球.然后按照第一步所写的,扔到库里.
    一秒一个,共飞10个,那么我们就要用到TIMER类,这个是AS2没有的,代码如下:
var t:Timer;
var ballNumber:uint = 10;    
t = new Timer(1000,10);
t.addEventListener(TimerEvent.TIMER,ballgo);
t.start();
     这样一秒一个,共10个算是写出来了,不过还没完,每秒调用时间时,我该干点啥还没写呢,继续:
var balls:MovieClip;
function ballgo(e:TimerEvent):void {
 balls = new ball();
 addChild(balls);
              //小球随机出现在Y轴300的地方,主要是为了方便查看,是否调用成功.
 balls.x = stage.stageWidth*Math.random();
 balls.y = 300;
}
 
     这样,小球就挨个的以每秒一个出现在舞台上,但是我们还不满足,毕竟那是气球啊,应该向上飞的.好,继续加入代码,先放速度,目前放统一的速度
var speed:uint= 5;
     然后在刚才的 ballgo FUNCTION里继续加代码:
    balls.addEventListener(Event.ENTER_FRAME,ballFly);
    加完后,写ballFly .
function ballFly(e:Event):void {
 e.target.y -= speed;
}
     测试一下,哈哈,气球在往上飞了,不过可以注意到两点:第一点,好象瞄准镜在气球下嘛,第二点,10个气球应该飞出舞台该消失了吧.恩,考虑的很对.好,先解决瞄准镜的问题:
     那瞄准镜为什么会在气球下呢?因为瞄准镜是先放到舞台上的,那么他的层次就比气球低,所以就会出现在气球之下,我们该怎么解决这个问题呢?我的方法是这样的,先制作一个空容器放在舞台上,然后用来放气球,很多的气球.这样不就把问题解决了嘛.解决了吗?不一定
   在刚开头,我就说过,瞄准镜有两种做法,为什么呢?好了,我们现在可以在这里知道答案了,因为瞄准镜需要在气球之上,但是如果你是十字相交的话,你鼠标无论怎么点,都是属于点在瞄准镜头上而不是气球上,那我们如果需要气球被打中的话,就是监听气球是否被鼠标点击了.可是鼠标点击都被十字相交的线给阻挡了,怎么办?所以用不相交的线为好。
   不过并不是不能用十字相交的线,可以这样解决.用swapChildren()语句在监听点击后调换层次.
     第二点疑问还没解决,飞出了舞台该消失,并且移除掉,节省资源.没错,这个是必须做的.那就是监听球的Y轴信息,如果出了舞台就移除掉.为了方便,就做一个移除掉的function,因为等后面爆炸后,这个function 还需要调用.
     再等等放代码,下面讨论的是随机速度.因为我需要气球都是每一个都是有自己的随机速度,那该怎么做?
    balls.speed =  5*Math.random()+2;//后面的数据随便改,可快可慢.
   那个其实也简单,在产生balls的时候,往里放一个随机的数据,这就完全解决了。
  头晕了吧,呵呵,没关系我现在放上以上的全部代码
var aims:MovieClip;
var balls:MovieClip;
var t:Timer;
var ballNumber:uint = 10;
var content_mc:MovieClip;
function aimMove(e:MouseEvent):void {
 aims.x = this.mouseX;
 aims.y = this.mouseY;
}
function init():void {
 content_mc = new MovieClip();
 addChild(content_mc);
 
 aims= new aim();
 addChild(aims);
 aims.enabled = false;
 Mouse.hide();
 stage.addEventListener(MouseEvent.MOUSE_MOVE,aimMove);
 t = new Timer(1000,10);
 t.addEventListener(TimerEvent.TIMER,ballgo);
 t.start();
}
init();
var speed:uint = 5;
function ballgo(e:TimerEvent):void {
 balls = new ball();
 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);
 
}
function ballFly(e:Event):void {
 var tempBall:MovieClip = e.currentTarget as MovieClip;
 if (tempBall.y + tempBall.height/2 >0) {
   tempBall.y -= tempBall.speed;
 } else {
   lose(tempBall);
 }
 
}
function lose(mc:Object):void{
 mc.removeEventListener(Event.ENTER_FRAME,ballFly);
   mc.parent.removeChild(mc);
}
function shoot(e:MouseEvent):void{
 trace("shoot")
}
源文件:

下载文件
点击这里下载文件
总结:以上的方式只是一种,比如我不需要TIMER类,我用舞台的ENTERFARME方式每次出一个气球,这样也可以.方法有很多,我这里只不过是其中之一。下面还有4步,不过下面的就比较简单了,主要的就是这两步.
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/3212.html
分享到:
评论

相关推荐

    scratch3.0源码:击破气球

    scratch3.0源码:击破气球

    as3打气球小游戏

    本文将基于“as3打气球小游戏”这一项目,深入剖析AS3在游戏开发中的应用,帮助初学者和类学习者更好地理解和掌握相关技术。 首先,我们要明白AS3是Adobe Flash Professional和Flash Builder等工具中的编程语言,它...

    打汽球游戏flash as3.0 源代码

    【打汽球游戏flash as3.0 源代码】是一个基于ActionScript 3.0开发的Flash游戏,它提供了一种有趣的方式来学习和理解AS3编程语言的基础知识。ActionScript 3.0是Adobe Flash Professional和Flex Builder等工具中用于...

    flash3.0游戏代码

    《Flash 3.0游戏代码解析:探索射击游戏的魅力与技术...对于希望学习Flash游戏开发的人来说,这是一个很好的实践案例,通过对源代码的分析和理解,可以深入掌握Flash编程的精髓,为自己的游戏创作之路奠定坚实基础。

    flash 3.0打汽球

    在本项目"flash 3.0打汽球"中,我们关注的是使用Adobe Flash Professional软件,结合ActionScript 3.0编程语言开发的一款简单的互动游戏。ActionScript是Flash平台的核心,用于创建动态内容、交互性应用程序和游戏。...

    打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码

    打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码打气球....

    flash as3.0碰撞测试代码

    根据提供的文件信息,我们可以分析出该Flash AS3.0程序主要实现了一个简单的打气球游戏。游戏中的核心功能包括:初始化游戏状态、显示分数、等级和机会次数等UI元素、处理鼠标点击事件来触发气球消失(即碰撞检测)...

    flash as3 打气球游戏源码

    【标题】"Flash AS3 打气球游戏源码"是一个基于ActionScript 3.0编程语言开发的小型游戏项目,旨在提供一个简单的娱乐体验,让玩家通过互动操作来击破屏幕上不断出现的气球。AS3是Flash Professional中用于创建动态...

    打气球.rar经典FC游戏

    《打气球》是一款经典的FC(Family Computer,即任天堂红白机)游戏,深受80后、90后的喜爱。该游戏以其简单的操作、趣味的游戏机制和富有挑战性的关卡设计,成为了许多人的童年回忆。在本文中,我们将深入探讨《打...

    Flash打气球游戏AS3源码

    【Flash打气球游戏AS3源码】是一个基于Adobe Flash平台开发的小型游戏,它采用ActionScript 3.0(AS3)编程语言编写。AS3是Flash开发中的一个重要里程碑,相比之前的版本,它提供了更加强大且面向对象的编程模型,...

    Java 打气球 小游戏 源码 案例

    【Java 打气球 小游戏 源码 案例】是一个基于Java编程语言开发的趣味小游戏,旨在提供一种轻松愉快的方式学习和实践Java编程。这个游戏的核心机制是玩家通过控制某种对象(如箭头、子弹等)来击破屏幕上不断升起的...

    VBA版打气球游戏 VBA 版打气球游戏 Excel

    VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel

    flash cs3 小游戏打气球

    通过学习和分析这个“打气球”游戏,我们可以了解Flash游戏开发的基本流程和核心技术,这对于想要进入Flash开发领域的初学者来说是一个很好的起点。同时,这也是一个实践ActionScript编程和理解游戏设计原理的好例子...

    JavaScript实现打气球的游戏

    JavaScript实现的打气球游戏是一种常见的网页互动小游戏,它结合了HTML、CSS和JavaScript技术,为用户提供了一种娱乐和学习编程的机会。在这个项目中,主要的知识点包括: 1. **HTML结构**:游戏界面的构建通常由...

    75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码

    75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目...

    打气球小游戏.zip

    总的来说,“打气球小游戏”是一个结合了HTML5、jQuery和面向对象编程的优秀实践案例,它展示了现代Web开发技术在游戏开发中的强大应用。通过对这个游戏的深入剖析,开发者不仅可以学习到基础的前端技术,还能理解...

    用C++编写的打气球的小游戏,课程设计

    本文将详细解析一个大二学生利用C++语言编写的打气球小游戏,带你深入理解C++的基本语法、游戏逻辑设计以及交互式程序的开发。 一、C++语言基础 C++是一种强大的面向对象编程语言,它继承了C语言的高效性和灵活性,...

    打气球小游戏(js)附带说明

    本压缩包提供的是一个基于JavaScript编写的“打气球”小游戏,旨在展示JavaScript的基础应用以及游戏逻辑的实现。通过这个小游戏,我们可以学习到以下几个关键知识点: 1. **HTML基础结构**:游戏界面的构建通常离...

    用html5做了一个打气球小游戏balloon

    在这个打气球游戏中,Canvas可能是用来绘制气球、玩家的射击路径以及得分显示的地方。通过JavaScript,开发者能够动态地在Canvas上移动和更新气球的位置,模拟气球上升和下落的效果。 JavaScript是实现游戏逻辑的...

    打气球小游戏-面向对象.zip

    通过切换背景图位置显示不同气球 气球宽高 118* 168 位置间距X:140 Y: 176 坐标的确定:横坐标0 1 2 3 纵坐标 0 1 2(4*3的精灵图),横坐标通过 下标%4 得出 纵坐标通过 parseInt(下标/4)得出 初始化设置 :初始...

Global site tag (gtag.js) - Google Analytics