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,为循环播放。

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

Egret)ios建议声音编码

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

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

/* 我目前使用的版本是egret2.5 */ egret支持的声音格式是mp3.获取资源的方式和之前的一样。 1. 使用URLLoader方式加载 /** * 这是使用URL方法加载...
  • qq_23156791
  • qq_23156791
  • 2015年11月19日 22:47
  • 1950

【egret】 IOS加载音频文件

egret 在 IOS 系统加载音频文件,会出现无法加载,从而卡在加载界面的情况。解决方法: 将声音资源转换成 44100Hz,96kbps。 如果有问题再转一...
  • Elk_1024
  • Elk_1024
  • 2016年11月02日 19:16
  • 839

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

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

2D的RPG游戏人物角色移动代码(以egret游戏引擎、TypeScript语言为例)

一般2D的RPG人物移动有三种: (一)背景固定,角色移动 (二)角色固定,背景移动 (三)角色移动,背景动态移动 第一种在移动端的游戏比较少见,但在PC端的模拟类游戏比较常见,因为屏幕较大,背景固定...
  • a727911438
  • a727911438
  • 2016年10月15日 11:02
  • 2203

egret 入门 初试

整理的文章《白鹭引擎入门》趁着今天周六,把苹果放下一边先。今天早上一醒来就装上了js编辑神器Webstorm ,最近也开始关注了一些移动方面的 js 前端框架。如 谷歌的Angularjs 和 fac...
  • hero82748274
  • hero82748274
  • 2015年04月25日 21:58
  • 5686

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

/* egret版本:2.5 */ 一.点击发声 /** * 这是使用RES方法加载。 * Created by 13641 on 2015/11/19. */ class So...
  • qq_23156791
  • qq_23156791
  • 2015年11月20日 00:40
  • 1602

iOS开发——音频篇——音效的播放

一、简单介绍 简单来说,音频可以分为2种 (1)音效 又称“短音频”,通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐   比如游戏中的“背景音乐”,一般播放时...
  • IT_liuchengli
  • IT_liuchengli
  • 2015年09月29日 13:58
  • 332

html5控制音频播放的声音

        控制播放音乐的音量                  window.addEventListener("load",function(){                  ...
  • baohanqing
  • baohanqing
  • 2013年12月30日 20:39
  • 1185

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

/* 使用的egret版本:2.5 编辑器采用webstrom */ 通过上一篇03成功可以加载资源,这一篇我们在上一篇的基础上,通过位图来搞一个动画。 如果想参看注释请回到上一篇。 直接...
  • qq_23156791
  • qq_23156791
  • 2015年11月19日 02:51
  • 501
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HTML5游戏制作之路_08_egret对于声音的控制
举报原因:
原因补充:

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