HTML5游戏制作之路_08_egret对于声音的控制

原创 2015年11月20日 00:40:06

/*

egret版本:2.5

*/

一.点击发声


/**
 * 这是使用RES方法加载。
 * Created by 13641 on 2015/11/19.
 */
class SoundControl extends egret.DisplayObjectContainer{

    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.mainFunc, this);
    }

    private mainFunc():void{
        this.loadSound();
    }

    private loadSound():void{
        RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.loadSoundComplete,this);
        RES.loadConfig("resource/default.res.json","resource/");
        RES.loadGroup("MPsound");
    }

    private sound:egret.Sound;

    private loadSoundComplete(event:RES.ResourceEvent):void{
        this.sound= RES.getRes("mp0");
        this.soundControl();
    }

    private soundControl():void{
        var button:egret.Sprite = new egret.Sprite();
        button.graphics.beginFill(0x7d7dff);
        button.graphics.drawRect(100,100,100,100);
        button.graphics.endFill();

        button.width = 100;
        button.height = 100;
        this.addChild(button);

        //重点在这里,点击事件的监听,点击事件的应用,记得要先设置touchEnable = true;
        button.touchEnabled = true;
        button.addEventListener(egret.TouchEvent.TOUCH_TAP,this.onClick,this);
    }

    //点击完成后的点击事件
    private onClick(event:egret.Event):void{
        this.sound.play();

    }
}


点击播放出了声音。

二.点击发声,点击暂停

/**
 * Created by 13641 on 2015/11/20.
 */
class SoundStartAndStop extends egret.DisplayObjectContainer{
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.mainFunc, this);
    }

    private mainFunc():void{
        this.loadResource();

    }

    private loadResource():void{
        RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.loadComplete,this);
        RES.loadConfig("resource/default.res.json","resource/");
        RES.loadGroup("MPsound");

    }
    private sound:egret.Sound;
    //注意channel这个变量,协助管理声音控制,很重要。
    private channel:egret.SoundChannel;
    private loadComplete(event:RES.ResourceEvent):void{
        this.sound = RES.getRes("mp0");
        this.SoundStartControl();
        this.CloseStartControl();
    }

    //监听开始按钮的方法
    private SoundStartControl():void{

        var btn_startSound :egret.Sprite = new egret.Sprite();
        btn_startSound.graphics.beginFill(0x00ff00);
        btn_startSound.graphics.drawCircle(200,200,20);
        btn_startSound.graphics.endFill();
        btn_startSound.width = 200;
        btn_startSound.height = 200;

        var lable_start:egret.TextField =new egret.TextField();
        lable_start.text = "播放";
        lable_start.x = 200;
        lable_start.y = 200;

        this.addChild(btn_startSound);
        this.addChild((lable_start));
        btn_startSound.touchEnabled = true;
        btn_startSound.addEventListener(egret.TouchEvent.TOUCH_TAP,this.startOnClick,this);
    }
    //点击开始的回调
    private startOnClick(event:egret.TouchEvent):void{
        if(this.channel){
            this.channel.stop();
        }
        this.channel = this.sound.play(0,1);
    }
    //监听停止按钮的方法
    private CloseStartControl():void{

        var btn_clostSound :egret.Sprite = new egret.Sprite();
        btn_clostSound.graphics.beginFill(0x0fff00);
        btn_clostSound.graphics.drawCircle(100,100,20);
        btn_clostSound.graphics.endFill();
        btn_clostSound.width = 200;
        btn_clostSound.height = 200;

        var lable_close:egret.TextField =new egret.TextField();
        lable_close.text = "停止";
        lable_close.x = 100;
        lable_close.y = 100;

        this.addChild(btn_clostSound);
        this.addChild((lable_close));
        btn_clostSound.touchEnabled = true;
        btn_clostSound.addEventListener(egret.TouchEvent.TOUCH_TAP,this.CloseOnClick,this);
    }
    //停止按钮的回调
    private CloseOnClick(event:egret.TouchEvent):void{
        if(this.channel){
            this.channel.stop();
            this.channel = null;
        }
    }

}


测试结果成功。

(注:如果想让声音循环,在sound.play(0,0)。

生成一个新的 SoundChannel 对象来播放该声音。此方法返回 SoundChannel 对象,访问该对象可停止声音调整音量。
* @param startTime 应开始播放的初始位置(以秒为单位),默认值是 0
* @param loops 播放次数,默认值是 0,循环播放。 大于 0 为播放次数,如 1 为播放 1 次;小于等于 0,为循环播放。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

HTML5游戏制作之路_07_egret的声音播放的三种方式

/* 我目前使用的版本是egret2.5 */ egret支持的声音格式是mp3.获取资源的方式和之前的一样。 1. 使用URLLoader方式加载 /** * 这是使用URL方法加载...

【Egret】里使用audio标签达到默认播放背景音乐

" autoplay='autoplay' loop="loop">你的浏览器不支持audio标签。 function setBgm(play){ var bgm = document.get...
  • arvin0
  • arvin0
  • 2016年05月09日 19:50
  • 10909

Egret)ios建议声音编码

由于 webAudio 对声音的格式有特定要求,在 ios 系统上如果测试碰到音频文件解码失败的情况,请使用具体来转换下格式(码率 44100Hz 96kbs ;工具推荐 绿色版glodwave)。...

白鹭引擎Egret入门知识补充

《围住神经猫》的一夜蹿红,让一个h5游戏引擎也跟着火热起来了——egret。 (官网传送门:http://www.egret-labs.org/) 安装和helloworld的demo官网给了很简...

HTML基础_02_格式标签

/* W3C不推荐使用的不会出现在这里 */ 1., 缩写第一个字母,鼠标移到上面可以显示全写。html5不支持acronym。 第二天 WWW WQ ...

HTML5游戏制作之路_06_egret关于精灵表单spritesheet

/* 采用位图的版本:2.5 采用的编辑器webstrom */ 精灵表单就是将很多图片合成在一张图片中,然后 我们可以获取其中的任何一张图,这样做可以加快游戏的图片加载,类似于unity‘中的图集,...

HTML5游戏制作之路_06_egret文本及相关属性

一.创建文本 显示结果: 二.添加一些属性 三.绘制矩形并添加文字描边 /** * Created by 13641 on 2015/11/19. */ class Textt...

HTML5游戏制作之路_03_egret的资源加载机制

/* 前一篇的链接: 使用的egret版本为2.5 */ h5支持矢量图(目测),自带的那个例子可以自由缩放,可以自适应(这让我很爽)。在egret里面叫bitmap(位图)实际上这个名称并不...

HTML5游戏制作之路_04_来做个动画吧

/* 使用的egret版本:2.5 编辑器采用webstrom */ 通过上一篇03成功可以加载资源,这一篇我们在上一篇的基础上,通过位图来搞一个动画。 如果想参看注释请回到上一篇。 直接...

HTML5游戏制作之路_09_2D骨骼动画工具DragonBone

/* 我目前使用的egret版本为2.5 */ DragonBone是制作动画或骨骼动画的工具,具体使用教程地址:DragonBone 很简单很暴力,省去了大量的时间。 我在这里主要介绍如何使用Dra...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HTML5游戏制作之路_08_egret对于声音的控制
举报原因:
原因补充:

(最多只允许输入30个字)