Javascript Tone.js(Web音频)的条件复选框操作

Javascript Tone.js(Web音频)的条件复选框操作,javascript,jquery,dom,tone.js,Javascript,Jquery,Dom,Tone.js,我正在尝试创建一个复选框($(“#按钮”)),该复选框的操作根据使用Tone.js和jQuery的播放器的状态(无论音频是否播放)而变化 因此,逻辑是,如果音频已启动,则复选框的操作只是将音频静音(或取消静音)。但是,如果音频尚未启动,则我希望复选框启动播放器(默认值为player.mute==false),并将其自身操作更改为静音/unmuting。这意味着,一旦player.state==启动就无法更改它,只能切换它是否为静音 我已经设法获得了一个函数,可以切换状态或静音值,但复选框本身的动

我正在尝试创建一个复选框(
$(“#按钮”)
),该复选框的操作根据使用Tone.js和jQuery的
播放器的状态(无论音频是否播放)而变化

因此,逻辑是,如果音频已启动,则复选框的操作只是将音频静音(或取消静音)。但是,如果音频尚未
启动
,则我希望复选框
启动
播放器
(默认值为
player.mute==false
),并将其自身操作更改为
静音
/unmuting。这意味着,一旦
player.state==启动
就无法更改它,只能切换它是否为
静音

我已经设法获得了一个函数,可以切换
状态
静音
值,但复选框本身的动作不受
状态
的制约。下面的代码是我的尝试,但似乎不起作用☹️ – 任何帮助都将不胜感激

  const button = $('#button');

  if(player.state == 'started') {
    $(button).attr('checked', true);
  } else if(player.state == 'stopped') {
    $(button).attr('checked', false);
  }

  if(player.state == 'started') {
    $(button).change(function(){
        if(player.mute == true) {
          player.mute == false;
          $(this).attr('checked', true);
        } else if(player.mute == false) {
          player.mute == true;
          $(this).attr('checked', false);
        }
      });
  } else if(player.state == 'stopped') {
    $(button).change(function(){
      player.start();
      $(this).attr('checked', true);
    });
  }

仅用于上下文:这是因为是否允许自动播放在不同的浏览器中有所不同。在某些情况下,我之前在脚本中使用的自动播放功能意味着
player
从页面加载开始(我理解的是,所需的行为如下所示:-

每当player.state==='started' 单击该按钮将使音频静音,再次单击该按钮将使音频取消静音。并继续切换,直到播放器启动。状态=='started' 如果player.state==“stopped”,单击按钮应启动音频,然后继续切换静音/取消静音,直到播放器处于启动状态

下面是相同的实现。 常量按钮=$(“#按钮”)

//在这个实现中,on复选框意味着取消静音和启动状态。
//关闭复选框意味着停止或启动+静音状态。

您的代码已被理解,但没有出现问题。请您解释一下,当您声明“但复选框本身的操作受状态“对不起@Aditya”制约时,您的意思是什么,所以基本上:
如果(player.state=='started'){
单击复选框仅切换播放器静音值
}
否则(player.state==“stopped”){
单击复选框将状态更改为“started”,并更改其自身行为,以便从现在起切换静音/取消静音
}
–希望这有帮助?这很好!非常感谢您–我不得不对
mute
函数做了一个小小的更改,因为出于某种原因,如果您试图通过
if(player.mute==true/false)
查找布尔值,它就不起作用了,所以现在它只是
if(player.mute){…}else{…}
但由于它只能是真的或假的,所以可能性不大。不太确定@Aditya–我是否应该在您的回答中更新代码以反映我所做的更改?这很好。开发人员始终需要对其进行一些调整。:)快乐的编码。
//First set the button state to checked on unchecked depending on state
if(player.state == 'started') {
  button.attr('checked', true); //this means now the player is playing musing and is unmute.
} else if(player.state == 'stopped') {
    button.attr('checked', false); //this means now the player is stopped and is also mute
}

button.change(function(){
  if(player.state === 'started') {
    if(player.mute) {
      player.mute = false;
      button.attr('checked', false);
    } else {
      player.mute = true;
      $(this).attr('checked', true);
    }
  } else if (player.state === 'stopped') { //button was clicked and player is in stopped state. so start the player and turn on the checkbox so it displays that it is playing and is unmute
    player.start();
    button.attr('checked', true);
  }
});