Как мне остановить Musi c от игры с моей кнопкой остановки? - PullRequest
0 голосов
/ 27 января 2020

Я создаю две кнопки, используя Corona SDK, одну для воспроизведения музыки c, а другую для остановки. Программа работает нормально, пока я не создаю кнопку остановки, и ничего не работает. Там нет звука. Может кто-нибудь помочь мне решить эту проблему, пожалуйста?

          local widget = require("widget")
          display.setStatusBar(display.HiddenStatusBar)

            centerX = display.contentWidth * .5
            centerY = display.contentHeight * .5

   -- Background
   local bg = display.newImageRect("bg_iPhone.png", 1100, 3200)
   bg.x = centerX
   bg.y = centerY

   local isAudioOn = true

   local soundJump = audio.loadSound("boing.mp3") --[[loadSound is for animations]]--
   local soundMusic = audio.loadStream("HappyPants.wav") --[[loadStream is for background music]]--

 --Sound function to play music
   local function playSound()
     if isAudioOn then
       audio.play(soundMusic)
       print("Boing!")
     end
   end

 -- Button Function that controls what happens after button is pressed
   local function buttonHit(action)
     if action == "play" then
       playSound()
     elseif action == "stop" then
       audio.stop(playSound)
     end
   end

 -- Play Button
   local playButton = widget.newButton{
   label = "Play",
   id = "play",
   x = 330,
   y = 500,
   labelColor = { default={ 0, 19, 189 }, over={ 0, 19, 189, 1 } },
   onPress = buttonHit
   }

  -- Stop Button
   local stopButton = widget.newButton{
   label = "Stop",
   id = "stop",
   x = 330,
   y= 550,
   labelColor = { default={ 0, 19, 189 }, over={ 0, 19, 189, 1 } },
   onPress = buttonHit
   }

1 Ответ

0 голосов
/ 27 января 2020

Ваша buttonHit неправильная функция.

Вы передаете аргумент action , однако, поскольку вы используете библиотеку виджетов, единственное, что передается в функция событие . Кроме того, вы дали кнопкам id , а не действие. Этот идентификатор затем относится к цели события, то есть к нажатой кнопке.

То, что вы хотите, это что-то вроде:

local function buttonHit( event )
  if event.target.id == "play" then
    playSound()
  else
    audio.stop(playSound)
  end
end
...