首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >p5.js音效库:如何添加/删除p5。来自p5的短语()。Part()?

p5.js音效库:如何添加/删除p5。来自p5的短语()。Part()?
EN

Stack Overflow用户
提问于 2016-05-14 00:49:42
回答 1查看 315关注 0票数 0

我正在开发一个p5.js的声音库,并使用p5短语和p5部件使多个声音文件一次播放。

我可以addPhrase(),但mousePressed函数中的removePhrase()函数根本不起作用。如何在p5部件中添加和删除短语之间切换,这将打开/关闭特定的声音文件?

代码语言:javascript
复制
var box, drum, myPart;
var drumPhrase;
var boxPhrase;
var boxPat = [1, 0, 0, 2, 0, 2, 0, 0];
var drumPat = [0, 1, 1, 0, 2, 0, 1, 0];

function preload() {
    box = loadSound('sound/noise.mp3');
    drum = loadSound('sound/drum1.wav');
}

function setup() {
    noStroke();
    fill(255);
    textAlign(CENTER);
    masterVolume(0.1);

    boxPhrase = new p5.Phrase('box', playBox, boxPat);
    drumPhrase = new p5.Phrase('drum', playDrum, drumPat);
    myPart = new p5.Part();

    myPart.addPhrase(boxPhrase);
    myPart.addPhrase(drumPhrase);

    myPart.setBPM(60);
    masterVolume(0.1);

    myPart.start();

}

function draw() {
    background(0);    
}

function playBox(time, playbackRate) {
    box.rate(playbackRate);
    box.play(time);
}

function playDrum(time, playbackRate) {
    drum.rate(playbackRate);
    drum.play(time);
}

function mousePressed() {
    myPart.removePhrase(box);

}
EN

回答 1

Stack Overflow用户

发布于 2016-07-28 06:38:54

你说得对,p5.ound中有一个bug,所以p5.Part.removePhrase不能工作。

这里有一个解决方法:在setup()函数的末尾添加以下代码片段:

代码语言:javascript
复制
p5.Part.prototype.removePhrase = function (name) {
    for (var i in this.phrases) {
        if (this.phrases[i].name === name) {
            this.phrases.splice(i, 1);
        }
    }
};

这将用实际的工作代码替换buggy函数。

我会让p5.js开发人员知道,这样就可以在官方版本中修复这个bug。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37215410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档