2016-08-09 21 views
1

問題:angularjsは、それらの間でいくつかの秒の遅延と同時に2回同じ曲を果たしている、私は音楽を呼び出す 初めて私はこのようにそれを実行します。html5 audioが角度付きで正しく機能しない|イオン

//preset sound 
    var sound = true; 
    var sound = localStorage.sound; 
    var sound = eval(sound); 

    $scope.icon = "ion-volume-mute"; 
    var audio = new Audio('sound/song.mp3'); 
    audio.loop = true; 

     //change icon & sound based on localstorage variables 
     if (sound == true){ 
      window.localStorage.setItem("sound", true); 
      audio.play(); 
      $scope.icon = "ion-volume-mute"; 
      console.log(sound); 
     } 
     else{ 
      window.localStorage.setItem("sound", false); 
      console.log("ëlse " + sound); 
      audio.pause(); 
      $scope.icon = "ion-volume-high"; 
     } 
    //let the user toggle the sound (MUTE | Play) 
    $scope.soundControl = function() { 

    if (sound == false){ 
     sound = true; 
     audio.play(); 
     $scope.icon = "ion-volume-mute"; 
     window.localStorage.setItem("sound", true); 
     console.log(localStorage.sound); 
    } 
    else{ 
     sound = false; 
     audio.pause(); 
     $scope.icon = "ion-volume-high"; 
     window.localStorage.setItem("sound", false); 
     console.log(localStorage.sound); 
    } 
    } 

これもボタンのを設定します

(別のページに)音楽を使用し続けるか、停止するか(ユーザーはページ全体で再生を続けます)、別の選択肢をユーザーに与えたいと考えています。

私はそれのためのコードと同じ種類を使用し、ボタンを切り替えたときに奇妙なことが今

//sound 
    var sound = true; 
    var sound = localStorage.sound; 
    var sound = eval(sound); 

    $scope.icon = "ion-volume-mute"; 
    var audio = new Audio('sound/song.mp3'); 
    audio.loop = true; 

     //audio switch (PLAY | PAUZE) 
    $scope.soundControl = function() { 

    if (sound == false){ 
     sound = true; 
     audio.play(); 
     $scope.icon = "ion-volume-mute"; 
     window.localStorage.setItem("sound", true); 
     console.log(localStorage.sound); 
    } 
    else{ 
     sound = false; 
     audio.pause(); 
     $scope.icon = "ion-volume-high"; 
     window.localStorage.setItem("sound", false); 
     console.log(localStorage.sound); 
    } 
    } 

、音楽ではなく、それをミュートの間でいくつかの遅延で2回の再生を開始します。

新しいオーディオ部分を削除しようとしましたが、オーディオファイルが見つからないため、ページがクラッシュしました。

既存の音楽ファイルの再生を停止または開始するのが理想的です。私の見解周りのコントローラのthatsを使用することにより

+0

このようにすると、 'var sound = true; var sound = localStorage.sound; var sound = eval(sound); '1つの変数の値を再割り当てするだけではありませんか?それで、ある事例では「真実」ですが、突然すべてがサウ​​ンドとして保存されますが、真実ではなく、最終的に評価されますが、もはやサウンドとして保存されず、真実でもありません。 – zer00ne

+0

私はif/elseをこのようにしてみましたif(localStorage.sound === null) { var sound = true; } else { var sound = localStorage.sound; var sound = eval(sound); } が、STIL、他のページでの開始新しい歌の代わりに、最初のコントローラから1での作業(また真の音=を削除し、2番目のコントローラOFCから一部) –

+0

最初のものは、ページ全体で演奏し続けるが、もう1つはそれが同じものであると認識していないようです –

答えて

1

(これは2つの異なるコントローラ間で)、私は1つのコントローラに私のものを置くことができ、それが魅力

<body ng-app="starter"> 
    <div ng-controller="complete-app"> 
     <ion-nav-view></ion-nav-view> 
    </div> 
    </body> 

好きで、このようなコントローラで動作するようです

app.controller("complete-app", function($scope) { 
    $scope.icon = "ion-volume-mute"; 
    var audio = new Audio('sound/song.mp3'); 
    audio.loop = true; 

    if (localStorage.sound === null) 
    { 
    var sound = true; 
    } 
    else { 
    var sound = localStorage.sound; 
    var sound = eval(sound); 
    } 

    //change icon & sound based on localstorage variables 
    if (sound === true){ 
     window.localStorage.setItem("sound", true); 
     console.log("sound " + sound); 
     audio.play(); 
     $scope.icon = "ion-volume-mute"; 
     console.log(sound); 
    } 
    else{ 
     window.localStorage.setItem("sound", false); 
     console.log("sound " + sound); 
     audio.pause(); 
     $scope.icon = "ion-volume-high"; 
    } 

    //let the user toggle the sound (MUTE | Play) 
    $scope.soundControl = function() { 

    if (sound === false){ 
     sound = true; 
     audio.play(); 
     $scope.icon = "ion-volume-mute"; 
     window.localStorage.setItem("sound", true); 
     console.log(localStorage.sound); 
    } 
    else{ 
     sound = false; 
     audio.pause(); 
     $scope.icon = "ion-volume-high"; 
     window.localStorage.setItem("sound", false); 
     console.log(localStorage.sound); 
    } 
    } 
}); 
関連する問題