`

Flixel横板游戏制作教程(六)—SoundsandMusic(音效与音乐)

 
阅读更多

from: http://bbs.9ria.com/thread-77302-1-1.html

 

演示程序

http://www.adamatomic.com/canabalt/

http://www.flixel.org/mode/

 

Flixel横板游戏制作教程(六)—SoundsandMusic(音效与音乐)

 

本教程是接着Flixel横板游戏制作教程(五)—Enemies (加入敌人)来做的。
音乐音效的加入让游戏更生动,快试试吧,下面是教程咯~
先看到 Player 类:

 

 

package 
{
        import org.flixel.FlxG;
        import org.flixel.FlxGroup;
        import org.flixel.FlxObject;
        import org.flixel.FlxSprite;
        
        /**
         * ...
         * @author zb
         */
        public class Player extends FlxSprite 
        {
                //***********已有的内容**************//
                
                //跳跃的声音
                [Embed(source = 'media/jump.mp3')]
                protected var jumpSnd:Class;
                //着地的声音
                [Embed(source = 'media/land.mp3')]
                protected var landSnd:Class;
                
                //***********已有的内容**************//
                
                //重写update 方法,用于控制
                public override function update():void
                {
                        //***********已有的内容**************//
                        
                        //找到 这里,然后在下面加上
                        if(FlxG.keys.justPressed('X') && onFloor)
                        {
                                //跳跃的时候,人物的y轴速度是向上的
                                velocity.y = -JUMP_ACCELERATION;
                                
                                //播放跳跃声音
                                //参数1:播放的声音类
                                //参数2:声音大小,默认为1
                                //参数3:是否循环,默认为false
                                FlxG.play(jumpSnd,1.0,false);
                        }
                        
                        //***********已有的内容**************//
                }
                
                //重写这个碰到下方的方法,主要是加一个落地声音
                override public function hitBottom(Contact:FlxObject,Velocity:Number):void 
                {
                        //为什么要 速度大于50呢?
                        //首先是因为,当人物在地面的时候,会不停的检测碰撞
                        //那么hitBottom会不停的检测,如果不加一个速度判断
                        //那么声音会不停的 播放
                        //所以加一个速度值判断 就是为了 让人物在地面的时候(地面时y速度为0)
                        //不会播放落地声音。。
                        if (velocity.y > 50) 
                        {
                                //落地声音
                                FlxG.play(landSnd);
                        }
                        super.hitBottom(Contact, Velocity);
                }
        }
        
}

 

 

package 
{
        import org.flixel.FlxG;
        import org.flixel.FlxGroup;
        import org.flixel.FlxObject;
        import org.flixel.FlxState;
        import org.flixel.FlxTileblock;
        import org.flixel.FlxU;
        
        /**
         * ...
         * @author zb
         */
        public class GameState extends FlxState 
        {
                //***********已有的内容*************//
                
                //背景音乐
                [Embed(source = 'media/mode.mp3')]
                protected var bgMusic:Class;
                //找到这个方法
                override public function create():void 
                {
                        //***********已有的内容*************//
                        
                        //添加背景音乐
                        addBackGroundMusic();
                }
                
                //***********已有的内容*************//
                
                private function addBackGroundMusic():void
                {
                        //play 和 playMusic 有什么区别?
                        //区别就是在于 play 方法的 第三个参数:Looped
                        //playMusic 没有这个 Looped ,是因为这个方法是播放循环音乐
                        //相当于 play 方法的 Looped 参数设置为 true,默认为false
                        FlxG.playMusic(bgMusic);
                }
        }
        
}

 下面是Bullet 类:

 

 

package 
{
        import org.flixel.FlxG;
        import org.flixel.FlxObject;
        import org.flixel.FlxSprite;
        
        /**
         * ...
         * @author zb
         */
        public class Bullet extends FlxSprite 
        {
                //***********已有的内容************//
                
                //发射子弹的声音
                [Embed(source = 'media/shoot.mp3')]
                protected var shootSnd:Class;
                //子弹碰到障碍物的声音
                [Embed(source = 'media/hit.mp3')]
                protected var hitSnd:Class;
                
                //***********已有的内容************//
                
                //找到这个方法
                public function shoot(sPosX:Number,sPosY:Number,velX:Number,velY:Number):void 
                {
                        //***********已有的内容************//
                        
                        //播放发射时的声音
                        FlxG.play(shootSnd);
                }
                
                //***********已有的内容************//
                
                //找到这个方法
                override public function hurt(Damage:Number):void 
                {
                        //***********已有的内容************//
                        
                        //播放碰到障碍物时爆炸的声音
                        FlxG.play(hitSnd);
                }
        }
        
}

 接着是 Enemy 类:

 

 

package 
{
        import org.flixel.FlxEmitter;
        import org.flixel.FlxG;
        import org.flixel.FlxObject;
        import org.flixel.FlxSprite;
        
        /**
         * ...
         * @author zb
         */
        public class Enemy extends FlxSprite 
        {
                //***********已有的内容**************//
                
                //敌人爆炸的声音
                [Embed(source = 'media/asplode.mp3')]
                protected var asplodeSnd:Class;
                
                //***********已有的内容**************//
                
                //找到这个方法
                override public function kill():void 
                {
                        //***********已有的内容**************//
                        
                        //播放敌人爆炸的声音
                        FlxG.play(asplodeSnd);
                }
                
                //***********已有的内容**************//
        }
        
}

 最后是 GameState 类:

 

 

分享到:
评论

相关推荐

    Flixel横板游戏制作教程(二)— AddingPlayer

    在"Flixel横板游戏制作教程(二)— AddingPlayer"中,我们将深入学习如何使用Flixel框架创建一个2D横向滚动的游戏。Flixel是一个开源的ActionScript 3库,特别适合开发2D游戏,它提供了丰富的功能,如精灵动画、...

    Flixel 横板游戏制作教程(一)— HelloFlixel ...

    标题中的“Flixel横板游戏制作教程(一)— HelloFlixel”指的是一个针对初学者的游戏开发系列教程,重点介绍了如何使用Flixel框架创建2D横版游戏。Flixel是一款开源的ActionScript库,适用于Flash平台,但现在也...

    Flixel横板游戏制作教程(三)— AddingWeapons

    在本教程中,“Flixel横板游戏制作教程(三)— Adding Weapons”将带领我们探索如何在基于Flixel框架的2D横版游戏中添加武器系统。Flixel是一个用ActionScript 3编写的开源游戏库,适用于Flash平台,但也可以通过...

    Flixel横板游戏制作教程(五)— Enemies

    在本教程“Flixel横板游戏制作教程(五)— Enemies”中,我们将深入学习如何在使用Flixel框架创建的2D横版游戏中添加敌人。Flixel是一个流行的开源ActionScript 3库,常用于开发2D游戏,尤其适用于Flash平台。尽管...

    Flixel 横板游戏制作教程(完结)

    •对流式音效和循环音乐迚行控制 •支持多层次的背景画面滚劢 •文本挄钮和鼠标挃针设置 •迚度存储,数学凼数和碰撞检测支持 •纯粹的as3编写,而丏免费 本教程是根据一个老版本(版本为 1.27)的教程改写而成的,...

    Flixel横板游戏制作教程(八)—MovingPlatforms(移动平台)

    文档`Flixel横板游戏制作教程(八)—MovingPlatforms(移动平台).doc`提供了详细的步骤和示例代码,帮助开发者理解移动平台的实现过程。通过阅读这份文档,你可以学习到如何编写`MovingPlatform`类的代码,以及...

    Flixel横板游戏制作教程(十一)—JetPack(飞行背包)

    最后,`Flixel横板游戏制作教程(十一)—JetPack(飞行背包).doc`文档应该详细解释了整个过程,包括代码示例和步骤指南,帮助开发者理解如何集成飞行背包功能。 通过这个教程,开发者不仅可以学习到Flixel框架的...

    Flixel横板游戏制作教程(七)—VictoryState(胜利状态)

    总之,本教程通过`Flixel横板游戏制作教程(七)—VictoryState(胜利状态).doc`文档,详细讲解了如何在Flixel环境中创建和管理游戏的不同状态,特别是胜利状态的实现。通过学习这些内容,开发者可以更好地理解和...

    Flixel横板游戏制作教程(九)—SquashingthePlayer(挤压Player)

    文档`Flixel横板游戏制作教程(九)—SquashingthePlayer(移动平台).doc`详细解释了如何实现挤压效果,特别是针对移动平台的特殊情况。阅读这份文档将有助于理解如何在Flixel中应用挤压效果,以及如何处理移动平台...

    Flixel 横板游戏制作教

    ### Flixel横版游戏制作教程 #### 一、Flixel 游戏框架简介 Flixel是一款基于Adobe Flash的开源2D游戏开发框架,它由Adam “Atomic” Saltsman创建,广泛应用于Flash游戏的开发。Flixel简化了许多常见的游戏开发...

    Flixel横板游戏制作教程(十)—Pickups(拾取道具)

    在本教程中,我们将探索如何在使用Flixel框架创建的横版游戏中实现Pickups(拾取道具)功能。Flixel是一个强大的2D游戏开发库,为ActionScript 3和Haxe开发者提供了丰富的功能,使得游戏开发变得更加简单。在这个...

    flixel platform game example

    6. **音频管理**:如何添加和播放背景音乐、音效,以及管理音频资源。 7. **关卡设计**:如何创建和加载关卡,可能涉及到XML或JSON格式的数据结构。 8. **碰撞检测**:理解Flixel提供的碰撞检测方法,并学会应用...

    flixel 游戏源代码

    `Flixel横板游戏制作教程(四)— RandomlyLevels .doc`是一个文档,可能详细介绍了如何创建随机生成的关卡,这是很多游戏增加重玩价值和挑战性的重要手段。学习如何动态生成关卡布局,可以使游戏更具吸引力。 最后...

    Flixel AS3游戏引擎

    ActionScript是Adobe Flash Platform的主要编程语言,因此Flixel主要与Flash Player和Adobe AIR平台相兼容,使得开发者可以构建丰富的交互式游戏内容,适用于网页和桌面应用。 Flixel的核心特性包括: 1. **高性能...

    Flixel游戏框架初探

    ### Flixel游戏框架初探 #### 一、Flixel框架简介 Flixel是一款完全开源的Flash游戏开发框架,适用于2D横版动作类游戏的开发。它提供了丰富的功能,包括动画处理、物体运动、2D碰撞检测、Tilemap支持以及场景管理...

    Flixel-flash开源游戏引擎

    1. `flx.py`: 这可能是一个Python脚本,可能用于与Flixel相关的自动化任务,如构建、测试或者打包游戏。Python在游戏开发中的用途广泛,可能是用来处理非Flash部分的工作,如生成资源或设置构建环境。 2. `build_...

    flash flixel游戏引擎

    **Flash Flixel游戏引擎详解** Flash Flixel是一款强大的开源游戏引擎,专为创建2D像素艺术风格的游戏而设计,让人联想到经典的Game Boy Advance(GBA)游戏。Flixel以其简单易用和丰富的功能集而受到游戏开发者们...

    Flixel创建一个自上而下RPG游戏

    在本教程中,我们将探讨如何使用Flixel游戏引擎来创建一个简单的自上而下的角色扮演游戏(RPG)。Flixel是一款基于ActionScript 3的2D游戏开发框架,以其简单易用和强大的功能而闻名。对于那些希望使用AS3进行游戏开发...

Global site tag (gtag.js) - Google Analytics