В Corona SDK composer, когда я перезагружаю сцену, звук немного затухает - PullRequest
0 голосов
/ 30 января 2019

В моем проекте Corona SDK у меня есть сцена композитора под названием "menu.lua" (созданная с помощью composer.newScene ()), которая является первой сценой, вызываемой файлом main.lua.У меня есть фоновый трек только для этой сцены, загруженный в scene: create () с audio.loadSound () в локальной переменной.Когда я загружаю другую сцену (предположим, что это «кредитная» сцена, статичная, без музыки, звуков, анимации, таймеров и т. Д.), А затем возвращаюсь к сцене меню, звук все еще воспроизводится, но с меньшей громкостью.

Звук воспроизводится в цикле на канале 2, я использую audio.play () в сцене scene: show «did».Я использую audio.fadeOut () в сцене: скрыть «будет», и остановить с помощью audio.stop () в фазе «сделал», а затем утилизировать с помощью audio.dispose () в сцене: уничтожить.

В файле "menu.lua"

local composer=require("composer")
local scene=composer.newScene()
local theme --this is the variable for audio

function scene:create(event)
  local sceneGroup=self.view
  theme=audio.loadSound("sfx/theme_short.mp3")
end

function scene:show(event)
  local sceneGroup=self.view
  if event.phase=="will"
    audio.play(theme,{loops=-1,channel=2})
  end
end

function scene:hide(event)
  local sceneGroup=self.view
  if event.phase=="will" then
    audio.fadeOut(theme,{500})
  end
  elseif event.phase=="did" then
    audio.stop(2)
  end
end

function scene:destroy(event)
  local sceneGroup=self.view
  audio.dispose(theme)
end

Другая сцена (предположим, что это "credits.lua") вызывается кнопкой с прикрепленным событием "tap".В "credits.lua" я использую эту функцию, чтобы вернуться к сцене "menu.lua" (функция вызывается с событием "tap", прикрепленным к кнопке)

local function goMenu()
  composer.removeScene("menu")
  composer.gotoScene("menu","slideUp",500)
  return true
end

Я уже пыталсявоспроизвести аудио в сцене: показать фазу «сделал» и в сцене: создать, но проблема остается.Проблема возникает со всеми сценами, все статические (всего 3).Есть идеи?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Убедитесь, что вы прочитали раздел "Gotcha" в документации:

Когда вы уменьшаете громкость, вы меняете громкость канала.Это значение является постоянным, и вы несете ответственность за сброс громкости на канале, если позднее вы захотите снова использовать канал (см. Audio.setVolume ()).

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

0 голосов
/ 31 января 2019

Вам следует заменить

audio.fadeOut(theme,{500})

на

audio.fadeOut( { channel=2, time=500 } )

, поскольку вы используете неправильный синтаксис.

См. audio.fadeOut ()

...