2016-11-29 2 views
0

Я использую vimeo api, который сообщает о ходе воспроизведения видео каждую секунду с 0.0 до 1, когда видео завершено. Я хочу сделать что-то, когда прогресс 0,66 или выше, но в моем случае петля, что я хочу сделать, это выстрелил непрерывно когда прогресс достигает 66% (0,66)Перерыв с javascript coffeescript, если оператор

  player.addEvent 'playProgress', (data, id) -> 
       break_loop = false 
       if data.percent >= 0.66 && break_loop is false 
       do_something 
       break_loop = true 

С, когда видео на 66% прогресса до конца do_something срабатывает каждую секунду, как я могу запустить его один раз?

+0

Что подразумевается под строкой 'once == false'? (Если Coffeescript еще более странный, чем я думаю, я подозреваю, что он ничего не делает.) – Pointy

+0

@pointy Я думал, что он сломает цикл после 'do_something' –

+0

Ну в обновленном вопросе код хуже:' break_loop = false' будет ** всегда ** установить флаг обратно на 'false', поэтому установка' true' в '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' – Pointy

ответ

1

Я бы рекомендовал обновить код, чтобы использовать new Vimeo JavaScript API, чтобы вы могли использовать off для удаления обработчиков событий. Затем вы можете переместить свой обработчик событий к имени функции (или, по крайней мере, ближе всего CoffeeScript имеет именованные функции), и это может отвязать себя, когда 66% знака будет достигнуто, что-то вроде:

progress = (data) -> 
    return if(data.percent < 0.66) 
    do_something() 
    player.off('timedupdate', progress) 

player.on('timedupdate', progress) 

не только вы получаете современный интерфейс, но вы также изучаете довольно распространенный шаблон с обратными вызовами JavaScript.

В старом API, который вы используете, может быть что-то вроде off, но я не могу найти для него никакой документации.

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