0

所以我有一个希望很简单的问题,但我不明白为什么我的代码没有按照我的意愿做。

function Sound:load()
 trackToPlay = musicDownbeat

 trackToPlay:play()
end

function Sound:changeMusic()
 if trackToPlay == musicUpbeat then
      trackToPlay:stop()
      trackToPlay = musicDownbeat
      trackToPlay:play()
 end
 if trackToPlay == musicDownbeat then
      trackToPlay:stop()
      trackToPlay = musicUpbeat
      trackToPlay:play()
 end
end

所以我有两个可以在musicUpbeat和musicDownbeat之间交替的Source轨道,并且在代码中的这一点(我已经剥离了Sound:load()以使其尽可能清晰),每次changeMusic()是调用时,trackToPlay 始终是 musicDownbeat,这意味着每次调用 changeMusic() 时,音乐都会停止并更改为 musicUpbeat。

Sound:load() 只被调用一次,对吧?那么为什么我的 trackToPlay 更改没有被保存?

4

1 回答 1

4

问题出在函数中changeMusic。您需要使用elseif而不是两个if语句。您的代码应如下所示:

function Sound:changeMusic()
 if trackToPlay == musicUpbeat then
      trackToPlay:stop()
      trackToPlay = musicDownbeat
      trackToPlay:play()
 elseif trackToPlay == musicDownbeat then
      trackToPlay:stop()
      trackToPlay = musicUpbeat
      trackToPlay:play()
 end
end

您在原始代码中编写它的方式,如果trackToPlaymusicUpbeat(它将changeMusic在第一次调用之后),它将被musicDownbeat第一个语句更改为,然后立即musicUpbeat由第二个if语句更改为。

于 2012-02-16T08:28:15.673 回答