- 浏览: 44692 次
- 性别:
- 来自: 广州
最新评论
好久没有写正经的文章了,这次打算写个打气球的文章,分为几部分写,其实是想写细点,其中很多方法,会扩展开讲.具体的提纲为以下:
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
发表评论
-
flv制作工具大全
2010-04-10 09:50 679Collected links to Flash Vid ... -
FLV播放器汇总
2010-04-10 09:50 569http://www.dengjie.com/weblog/c ... -
FCS阅读笔记29 服务器日志
2010-04-10 09:49 572在管理FlashCom MX Server的时候,一件非常重要 ... -
FCS阅读笔记29 服务器日志
2010-04-10 09:49 731在管理FlashCom MX Server的时候,一件非常重要 ... -
Flash Media Server 起步(13)再说说SO....onSync(list)
2010-04-10 09:49 511很早以前写过so,当时 ... -
flash AS3爱好者不可缺少的Class Diagram( 类图表 )下载
2010-04-09 12:46 983很早前就在 RIS 上发现了一张 101.588cm x 71 ... -
flash AS3爱好者不可缺少的Class Diagram( 类图表 )下载
2010-04-09 12:45 925很早前就在 RIS 上发现了一张 101.588cm x 71 ... -
flash AS3.0 的第一步: Hello World
2010-04-09 12:45 1055应网友(他原是美工的)的要求,写一篇Flash CS3 的基 ... -
flash AS3.0 的第一步: Hello World
2010-04-09 12:45 991应网友(他原是美工的)的要求,写一篇Flash CS3 的基 ... -
as3游戏开发之打气球系列(二)
2010-04-09 12:45 561HI,经过了昨天疯狂的理 ... -
as3按钮事件
2010-04-09 08:24 546在刚开始学As3时,如果不知道按钮的事件如onPress的话 ... -
【as3】ActionScript 3.0体验试教学视频教程
2010-04-09 08:24 379很不错的视频教程 原文地址: http://blog.sina ... -
as3 使用sound类(翻译)-暂停和继续播放声音
2010-04-09 08:24 573[1b]问题十[/1b] 如何暂停声音,如何从暂停的地 ... -
ActionScript 3.0(as3)实现的A*寻路算法源代码下载
2010-04-09 08:24 1109曾经写过A*寻路算法的教程,但没有贴出任何代码,这次代码全都贴 ... -
指针随鼠标移动的flash卡通时钟
2010-04-08 07:49 534。先看下时钟效果: var fnum:Number = ... -
动画人物运动规律与节奏
2010-04-08 07:49 562本文转自:h ... -
Flash绘制美丽风景画之海滩
2010-04-08 07:49 464过前段时间学习,我们掌握了鼠绘的一些初步知识,今天我们来综合一 ... -
Flash制作卷轴水墨画展开动画效果
2010-04-08 07:48 659北京奥运会开幕式上那充满诗意的卷轴,以及它所呈现给我们的一幅幅 ... -
Flash鼠绘入门第十三课:绘制美丽春日飞燕
2010-04-08 07:48 511相传燕子于春天社日北 ... -
为AS2.0添砖加瓦-编写类扩展
2010-04-07 10:18 714[1b][序] [/1b]基于类的编程,使得我们可以更加轻松地 ...
相关推荐
本文将基于“as3打气球小游戏”这一项目,深入剖析AS3在游戏开发中的应用,帮助初学者和类学习者更好地理解和掌握相关技术。 首先,我们要明白AS3是Adobe Flash Professional和Flash Builder等工具中的编程语言,它...
【打汽球游戏flash as3.0 源代码】是一个基于ActionScript 3.0开发的Flash游戏,它提供了一种有趣的方式来学习和理解AS3编程语言的基础知识。ActionScript 3.0是Adobe Flash Professional和Flex Builder等工具中用于...
《Flash 3.0游戏代码解析:探索射击游戏的魅力与技术...对于希望学习Flash游戏开发的人来说,这是一个很好的实践案例,通过对源代码的分析和理解,可以深入掌握Flash编程的精髓,为自己的游戏创作之路奠定坚实基础。
在本项目"flash 3.0打汽球"中,我们关注的是使用Adobe Flash Professional软件,结合ActionScript 3.0编程语言开发的一款简单的互动游戏。ActionScript是Flash平台的核心,用于创建动态内容、交互性应用程序和游戏。...
scratch3.0源码:击破气球
打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码打气球....
根据提供的文件信息,我们可以分析出该Flash AS3.0程序主要实现了一个简单的打气球游戏。游戏中的核心功能包括:初始化游戏状态、显示分数、等级和机会次数等UI元素、处理鼠标点击事件来触发气球消失(即碰撞检测)...
【标题】"Flash AS3 打气球游戏源码"是一个基于ActionScript 3.0编程语言开发的小型游戏项目,旨在提供一个简单的娱乐体验,让玩家通过互动操作来击破屏幕上不断出现的气球。AS3是Flash Professional中用于创建动态...
【Flash打气球游戏AS3源码】是一个基于Adobe Flash平台开发的小型游戏,它采用ActionScript 3.0(AS3)编程语言编写。AS3是Flash开发中的一个重要里程碑,相比之前的版本,它提供了更加强大且面向对象的编程模型,...
《打气球》是一款经典的FC(Family Computer,即任天堂红白机)游戏,深受80后、90后的喜爱。该游戏以其简单的操作、趣味的游戏机制和富有挑战性的关卡设计,成为了许多人的童年回忆。在本文中,我们将深入探讨《打...
【Java 打气球 小游戏 源码 案例】是一个基于Java编程语言开发的趣味小游戏,旨在提供一种轻松愉快的方式学习和实践Java编程。这个游戏的核心机制是玩家通过控制某种对象(如箭头、子弹等)来击破屏幕上不断升起的...
通过学习和分析这个“打气球”游戏,我们可以了解Flash游戏开发的基本流程和核心技术,这对于想要进入Flash开发领域的初学者来说是一个很好的起点。同时,这也是一个实践ActionScript编程和理解游戏设计原理的好例子...
VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel
JavaScript实现的打气球游戏是一种常见的网页互动小游戏,它结合了HTML、CSS和JavaScript技术,为用户提供了一种娱乐和学习编程的机会。在这个项目中,主要的知识点包括: 1. **HTML结构**:游戏界面的构建通常由...
75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目...
总的来说,“打气球小游戏”是一个结合了HTML5、jQuery和面向对象编程的优秀实践案例,它展示了现代Web开发技术在游戏开发中的强大应用。通过对这个游戏的深入剖析,开发者不仅可以学习到基础的前端技术,还能理解...
本文将详细解析一个大二学生利用C++语言编写的打气球小游戏,带你深入理解C++的基本语法、游戏逻辑设计以及交互式程序的开发。 一、C++语言基础 C++是一种强大的面向对象编程语言,它继承了C语言的高效性和灵活性,...
本压缩包提供的是一个基于JavaScript编写的“打气球”小游戏,旨在展示JavaScript的基础应用以及游戏逻辑的实现。通过这个小游戏,我们可以学习到以下几个关键知识点: 1. **HTML基础结构**:游戏界面的构建通常离...
在这个打气球游戏中,Canvas可能是用来绘制气球、玩家的射击路径以及得分显示的地方。通过JavaScript,开发者能够动态地在Canvas上移动和更新气球的位置,模拟气球上升和下落的效果。 JavaScript是实现游戏逻辑的...
通过切换背景图位置显示不同气球 气球宽高 118* 168 位置间距X:140 Y: 176 坐标的确定:横坐标0 1 2 3 纵坐标 0 1 2(4*3的精灵图),横坐标通过 下标%4 得出 纵坐标通过 parseInt(下标/4)得出 初始化设置 :初始...