首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioContext.resume()/.suspend()正在出错

AudioContext.resume()/.suspend()正在出错
EN

Stack Overflow用户
提问于 2022-10-28 15:26:34
回答 1查看 26关注 0票数 0

为了创建触发器并让它们播放,我需要复制它们并点击我创建的按钮。副本很好。但是当我切换按钮时,它说我在非法调用AudioContext对象的函数。

我尝试使用单个AudioContexts,我尝试过forEach、for...of和for循环以及while循环。我想不出还有什么是我没有尝试过的,谷歌也没有给出多少回应,足够让人吃惊的是。我原以为其中一个循环会是完成任务的一个很好的入口,但没有一个是灵丹妙药。

有人能看到我代码中的错误吗?

`

代码语言:javascript
复制
function playPauseSample(osc)
{
    console.log(audioCtxPads.get(osc.id));
    if (osc.getAttribute("active") == "true")
    {
        osc.setAttribute("active","false");
        var z = audioCtxPads.get(osc.id);
        var i = 1;
        while (audioCtxPads.has(osc.id) && i < 8)
        {
            var p = "0" + i.toString();
            console.log(z);
            if (z[p] != null)
                z[p].suspend();
            i++;
        }
        audioCtxPads.set(osc.id, z);
        console.log(z);
        osc.classList.toggle("on");
        osc.classList.toggle("off");
        return;
    }
    else if (osc.getAttribute("active") == "false") {
        osc.setAttribute("active","true");
        var z = audioCtxPads.get(osc.id);
        var i = 1;
        while (audioCtxPads.has(osc.id) && i < 8)
        {
            var p = "0" + i.toString();
            console.log(z);
            if (z[p] != null)
                z[p].resume();
            i++;
        }
        audioCtxPads.set(osc.id, z);
        console.log(z);
        osc.classList.toggle("off");
        osc.classList.toggle("on");
        return;
    }
    console.log(osc.getAttribute("active"));
}

`

EN

回答 1

Stack Overflow用户

发布于 2022-10-28 23:11:17

代码语言:javascript
复制
if (audioCtxPads.has(osc.id) && osc.getAttribute("active") == "true")
{
    osc.setAttribute("active","false");
    
    for (let i of audioCtxPads.get(osc.id).values())
        for (let j of i.values())
            j.suspend();
    if (osc.nextSibling.nextSibling.classList == "play on")
        osc.nextSibling.nextSibling.classList.toggle("on");
    
    osc.classList.toggle("on");
    osc.classList.toggle("off");
    return;
}
else if (audioCtxPads.has(osc.id) && osc.getAttribute("active") == "false") {
    osc.setAttribute("active","true");
    console.log(audioCtxPads.get(osc.id).values());
    for (let i of audioCtxPads.get(osc.id).values())
        for (let j of i.values())
            j.resume();
    if (osc.nextSibling.nextSibling.classList == "play on")
        osc.nextSibling.nextSibling.classList.toggle("on");
    
    osc.classList.toggle("off");
    osc.classList.toggle("on");
    return;
}

好吧,答案就埋在筑巢结构下。你必须得到这些值,然后得到这组值的值。还有一些类似的,对于那些在未来,请仔细阅读这一点。谢谢大家!(顺便说一句,这个示例使用的是带有文本键的Map和值的Array。就这样吧!)

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

https://stackoverflow.com/questions/74237560

复制
相关文章

相似问题

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