2015-12-22 2 views
11

Я хотел бы создать кнопки, которые будут воспроизводить следующую/предыдущую песню при нажатии, но они должны искать музыку при длительной печати.Как искать с AudioContext

Мне удалось изменить песни, но я не смог найти методы поиска. Также как заставить его играть с самого начала?

И есть ли способ определить, сколько прошло с начала песни? Я обнаружил, что буфер имеет продолжительность, но не петь реального времени воспроизведения.

В INIT:

context = new (window.AudioContext || window.webkitAudioContext)() 

Чтобы играть песню:

var buffer = song.buffer 
var source = context.createBufferSource() 
source.buffer = song.buffer 
source.connect(analysers.main) 
source.start(0, offset || 0) 

ответ

4

Guess, вы должны использовать AudioBufferNode (он имеет способность делать искать) - https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start

Кроме того, эта обертка может быть полезным - https://github.com/eipark/buffaudio

+0

Не могли бы вы ответить и на вторую часть вопроса? О том, насколько мы в песне? В процентах или что-то еще ... – Akxe

+0

Угадайте, 'AudiBufferNode' имеет свойство' duration'. Вы можете попробовать его использовать. Кроме того, это может быть полезно немного http://stackoverflow.com/questions/11203773/how-can-i-get-the-html5-audios-duration-time –

+0

Это неверно, 'AudioBufferSourceNode' не может искать (вы не может вызывать 'start' более одного раза). – ffxsam

2

Используйте taphold API для получения идеальной длинной пресс-конференции.

$(function(){ 
    $("your element").bind("taphold", tapholdHandler); 

    function tapholdHandler(event){ 
    /*write your code here for seek forward */ 

    } 
}); 

Использование JQuery Таймер

var mousedowntime; 
    var presstime; 
    $("button[id$='" + buttonID + "']").mousedown(function() { 
     var d = new Date(); 
     mousedowntime = d.getTime(); 
    }); 
    $("button[id$='" + buttonID + "']").mouseup(function() { 
     var d = new Date(); 
     presstime = d.getTime() - mousedowntime; 
     if (presstime > 999/*You can decide the time*/) { 
      //Do_Action_Long_Press_Event(); 
     } 
     else { 
      //Do_Action_Click_Event(); 
     } 
    }); 

играть от начала

function beginAudio(){ 
      audio.trigger('pause'); 
      audio.prop("currentTime",audio.prop("currentTime")-audio.prop("currentTime")); 
      audio.trigger('play'); 
     } 

или установить текущее время до нуля, а затем играть.

для прямого и обратного использования этого

audio.prop("currentTime",audio.prop("currentTime")-5);// 5 secs backward 
audio.prop("currentTime",audio.prop("currentTime")+5);// 5 secs forward 
+0

У меня нет звуковой переменной, у меня есть переменная контекста (typeof AudioContext). И нет jQuery. И трюк для поиска - это не проблема поиска и того факта, что audiocontext начинает отсчет текущего времени с момента его создания и не останавливается, когда звук делает – Akxe

+0

, вы можете показать свой исходный код для аудиоконференции, а также для 'play next/prev song on click song' .. –

Смежные вопросы