Egret社区

声音播放及设置

2019-8-21 18:38
3070
一般游戏都会有背景音乐和音效,这篇文章是关于声音的加载、播放和设置音量大小。
在Egret中,加载声音有三种方式:

一、通过egret.Sound类加载声



[mw_shl_code=javascript,true]private bgMusic:egret.Sound;//背景音乐
private channel:egret.SoundChannel;//声道
private createGameScene() {
        // 创建声音对象
        let sound:egret.Sound = new egret.Sound();
        // 利用声音对象的load方法加载音乐文件到内存中
        sound.load("resource/assets/sound/background.mp3");
        // 声音加载完毕时调⽤
        sound.addEventListener(egret.Event.COMPLETE,this.onSoundComplete,this);
        // 声音加载出错时触发
        sound.addEventListener(egret.IOErrorEvent.IO_ERROR,this.soundError,this);
        this.bgMusic = sound;

        this.stage.addEventListener(egret.TouchEvent.TOUCH_TAP,()=>{
                console.log("点击了舞台");
                this.channel.stop();
        },this);
}
private onSoundComplete(){
        console.log("音乐文件加载完毕!");
        //play(开始播放的位置,重复次数)
        this.channel = this.bgMusic.play(0,1);
        //设置音量
        this.channel.volume = 1;
        //等待1000毫秒,音量在1000毫秒内逐渐变为0.1
        //音量范围 0 到 1
        egret.Tween.get(this.channel)
        .wait(1000)
        .to({volume:0.1},1000)
}
private soundError(){
        console.log("加载出错!");
}[/mw_shl_code]

1、认识egret.Sound类
Sound 允许在应用程序中使用声音。使用 Sound 类可以创建 Sound对象、将外部音频文件加载到该对象并播放该文件。可通过SoundChannel 对声音执行更精细的控制,
如控制音量和监控播放进度。


2、认识egret.sound类相关的事件
    egret.Event.COMPLETE                                  声音文件被加载到内存时触发
    egret.IOERROREVENT.IO_ERROR                读取声音文件出错时触发

3、 声音相关的方法
·播放
     egret.Sound类对象.play()
     [mw_shl_code=javascript,true]/**
* 生成一个新的 SoundChannel 对象来播放该声音。此方法返回 SoundChannel 对象,访问该对象可停止声音调整音量。
* startTime 应开始播放的初始位置(以秒为单位),默认值是 0
* loops 播放次数,默认值是 0,循环播放。 大于 0 为播放次数,如 1 为播放 1 次;等于等于 0,为循环播放。
*/
play(startTime?: number, loops?: number):SoundChannel;[/mw_shl_code]
·停止
     egret.SoundChannel对象.stop()
     [mw_shl_code=javascript,true]stop(): void;[/mw_shl_code]

·调节音量
     egret.SoundChannel对象.volume 属性值(0~1)
     [mw_shl_code=javascript,true]/**
* 音量范围从 0(静音)至 1(最大音量)。
*/
volume: number;[/mw_shl_code]


二、通过RES模块加载音乐文件
    第一步,先把音乐文件放在RES的资源配置文件中;
    第二步,通过RES模块加载资源配置文件到内存中;
    第三步,通过egret.Sound类创建声文对象。


    [mw_shl_code=javascript,true]private createGameScene(){
        let bgMusic:egret.Sound =RES.getRes("background_mp3");
        bgMusic.play(0,1);
}[/mw_shl_code]    注意:如果通过RES这种方式加载音乐文件,在游戏启动的时候,加载资源时间较长。一般在游戏中不采用这种方式。

三、通过URLLoader加载音乐文件

[mw_shl_code=javascript,true]//创建一个URLLoader对象
var loader:egret.URLLoader = new egret.URLLoader();
//监听加载完毕事件
loader.addEventListener(egret.Event.COMPLETE,function(event:egret.Event) {
                var sound:egret.Sound = loader.data;
                sound.play();
        }, this);
//设置要加载的资源格式
loader.dataFormat = egret.URLLoaderDataFormat.SOUND;
//设置要加载的资源的路径
loader.load(new egret.URLRequest("resource/sound/sound.mp3"));[/mw_shl_code]



以上就是有关声音的一些总结,希望对大家有帮助。

shengyin.zip

1.74 MB, 下载次数: 1, 下载积分: 银子 -1

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部