Хорошо, мой заголовок немного запутанный, но позвольте мне объяснить.
Я использую renderUI для получения звукового тега, однако я хочу запустить звук на более низкой громкости, потому что он просто слишком громкий.
Приведенный ниже код работает нормально, за исключением того, что я добавил задержку, она запускается при увеличении громкости и быстро переходит в более низкую громкость, но она все еще очень заметна. Понижение задержки не помогает, я пробовал. Если я уберу задержку, два события наблюдения будут выполняться одновременно, и громкость не изменится. Если я переместу тег js $ run (который уменьшает громкость) внутри первого наблюдателя, он тоже не будет работать. Я думаю, что это потому, что renderUI фактически не рендерится, пока наблюдающее событие полностью не завершится. Кроме того, я не думаю, что могу удалить renderUI, потому что в моем полном приложении я использую пользовательский ввод для воспроизведения аудио.
Есть ли способ изначально запустить звуковую метку на более низкой громкости? Или есть способ запустить renderUI немедленно, чтобы не было задержки?
Спасибо за помощь, спасибо.
library(shiny)
library(shinyjs)
jsCode <- 'shinyjs.runs = function setHalfVolume() {document.getElementById("myaudio").volume = 0.2;}'
get_audio <- function(){
tags$audio(id = "myaudio", controls = NA, autoplay = NA, tags$source(src="aud.mpeg"))
}
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode),
uiOutput("my_audio"),
actionButton("guessbutton", "Submit")
)
server <- function(input, output) {
observeEvent(input$guessbutton, {
output$my_audio <- renderUI(get_audio())
#js$runs()
})
observeEvent(input$guessbutton, {
delay(100, js$runs())
})
}
shinyApp(ui = ui, server = server)