- 浏览: 43497 次
- 性别:
- 来自: 北京
最新评论
好久没有写正经的文章了,这次打算写个打气球的文章,分为几部分写,其实是想写细点,其中很多方法,会扩展开讲.具体的提纲为以下:
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
发表评论
-
MovieClipLoader的一个小例子教程(动态加载图片的进度条)
2010-04-10 13:28 734var myloader:MovieClipLoader ... -
使用flash MovieclipLoader & ProgressBar打造下载图片
2010-04-10 13:28 664今日试要做一个图片下 ... -
使用flash MovieclipLoader & ProgressBar打造下载图片
2010-04-10 13:28 716今日试要做一个图片下 ... -
一个flash loading效果
2010-04-10 13:27 706在公司里做动画时候做的一个loading的效果,可以参考但不要 ... -
非常棒的loading制作教程
2010-04-10 13:27 524首先,想说一下我写此文的动机。记得很早之前我曾经说过“没有l ... -
我对as3声音架构的理解
2010-04-09 13:53 333一直都对as3的声音架构 ... -
as3按钮事件
2010-04-09 13:53 463在刚开始学As3时,如果不知道按钮的事件如onPress的话 ... -
【as3】ActionScript 3.0体验试教学视频教程
2010-04-09 13:53 561很不错的视频教程 原文地址: http://blog.sina ... -
as3 使用sound类(翻译)-暂停和继续播放声音
2010-04-09 13:52 732[1b]问题十[/1b] 如何暂停声音,如何从暂停的地 ... -
Coding ActionScript 3.0系列[4] 外部swf库资源载入及使用
2010-04-09 11:44 814[1b]关于 Coding ActionScript 3.0 ... -
flash AS3 的Dictionary 对象测试
2010-04-09 11:44 697as3提供一个Dictionary 对象,它和Object有 ... -
flash AS3 的Dictionary 对象测试
2010-04-09 11:44 1361as3提供一个Dictionary 对象,它和Object有 ... -
Flash Player8 ActiveX 读取本地中文文件夹文件错误问题
2010-04-09 11:43 786这个问题只存在与Flash Player8及以上版本,如果将 ... -
Flash Player8 ActiveX 读取本地中文文件夹文件错误问题
2010-04-09 11:43 775这个问题只存在与Flash Player8及以上版本,如果将 ... -
完整把握Flash动画设计的知识体系
2010-04-08 11:15 757一个正确的知识体系 ... -
完整把握Flash动画设计的知识体系
2010-04-08 11:15 647一个正确的知识体系 ... -
flash打造阳光,鲜花,小草动起来,
2010-04-08 11:14 1007[url=http://www.7880.com/Uploa ... -
flash打造阳光,鲜花,小草动起来,
2010-04-08 11:14 878[url=http://www.7880.com/Uploa ... -
美女遮罩效果
2010-04-08 11:14 688效果预览: 教程原文: 打包文件 源码下载 本文转自:http ... -
Flash中的鼠标绘画技巧(上)
2010-04-08 09:29 650场白:看着网上那么多 ...
相关推荐
用AS3写的打气球游戏,特别适合初学as3做游戏开发的人,也适合学习类的学习者!不适合做界面的FLASH学习者。
碰撞测试,打气球游戏,当光标接触气球时候,气球就消失
使用flash as3.0制作的打汽球游戏,
打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码打气球.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码打气球....
VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel VBA 版打气球游戏 Excel
scratch3.0源码:击破气球
75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码75--[一起来打气球吧].zip源码scratch2.0 3.0编程项目...
一个flash的源代码。在网上看到的,希望和大家分享 ,哈哈哈哈哈 很好
打气球 这个小游戏挺有意思的,传出来给大家分享一下!!
文件包含打气球的实现代码、功能代码思路讲解、视频演示和讲解。打气球的小游戏:在开始界面根据气球出现的数量和移动速度分为三个游戏等级可供选择,点击某个等级后转到对应难度的游戏。
通过切换背景图位置显示不同气球 气球宽高 118* 168 位置间距X:140 Y: 176 坐标的确定:横坐标0 1 2 3 纵坐标 0 1 2(4*3的精灵图),横坐标通过 下标%4 得出 纵坐标通过 parseInt(下标/4)得出 初始化设置 :初始...
48--[打气球].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码48--[打气球].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码48--[打气球].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码48...
74--[打气球].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码74--[打气球].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码74--[打气球].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码74...
flash as3 开发的打气球小游戏,
《flash游戏编程指南》中的打气球游戏源码。
jQuery+HTML5+面向对象 打气球小游戏,有BGM和气球爆炸音效(来源网络),有不同分数的气球,分数不同速度不同,限时一分钟,计分。
里面包括需求分析等,注释多于代码,大家可以更好地理解,互相学习,浏览器打开即可运行,相当于一个小游戏
压缩包里有两种打气球玩法,点开网页即可打气球。打中气球会加分,当气球触碰到网页顶部则游戏结束。
48--[戳气球小游戏].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码48--[戳气球小游戏].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码48--[戳气球小游戏].zip源码scratch2.0 3.0编程项目源文件...
打气球